Hi everyone,
I am trying to model a shear wall with SFI-MVLEM. I used Menegotto&Pinto constitutive model for steel and Chang&Mander for concrete. I calculated all the concrete parameters following Chang&Mander formulas, except the values of xcrnu and xcrnc (see the code later). The model seems to work very well but only for the first 4 or 5 displacement-cycle peaks (in total I have 8 peaks). After the first peaks it fails to converge. What should I do? Thanks to everyone is going to help me.
# Wall Geometry
set H 192; # Wall height
set t 12; # Wall thickness
# Create nodes
# node nodeId xCrd yCrd
node 1 0 0;
node 2 0 12.8;
node 3 0 25.6;
node 4 0 38.4;
node 5 0 51.2;
node 6 0 64;
node 7 0 76.8;
node 8 0 89.6;
node 9 0 102.4;
node 10 0 115.2;
node 11 0 128;
node 12 0 140.8;
node 13 0 153.6;
node 14 0 166.4;
node 15 0 179.2;
node 16 0 $H;
# Boundary conditions
fix 1 1 1 1; # Fixed condition at node 1
# Set Control Node and DOF
set IDctrlNode 16;
set IDctrlDOF 1;
# ------------------------------------------------------------------------
# Define uniaxial materials for 2D RC Panel Constitutive Model (FSAM)
# ------------------------------------------------------------------------
# STEEL ...........................................................
# uniaxialMaterial SteelMPF $mattag $fyp $fyn $E0 $bp $bn $R0 $a1 $a2
# steel Xweb and Xboundary (#4)
set fy4 74.25; # fy
set b4 0.012; # strain hardening
# steel Yweb and Yboundary(#6)
set fy6 73.26; # fy
set b6 0.01; # strain hardening
# steel misc
set Es4 22797.05; # Young's modulus
set Es6 24986.36; # Young's modulus
set R0 20.0; # initial value of curvature parameter
set A1 0.925; # curvature degradation parameter
set A2 0.15; # curvature degradation parameter (good value)
# Build steel materials
uniaxialMaterial SteelMPF 1 $fy4 $fy4 $Es4 $b4 $b4 $R0 $A1 $A2; # steel Xweb+Xbound
uniaxialMaterial SteelMPF 2 $fy6 $fy6 $Es6 $b6 $b6 $R0 $A1 $A2; # steel Yweb+Ybound
# CONCRETE ........................................................
# uniaxialMaterial ConcreteCM $mattag $fpcc $epcc $Ec $rc $xcrn $ft $et $rt $xcrp <-GapClose $gap>
# unconfined
set fpc 5.9513; # peak compressive stress - dato da test
set ec0 -0.002196; # strain at peak compressive stress - (0.002303 da test) (concr07 0.002196)
set ft 0.289; # peak tensile stress - da formula concr07
set et 0.00012; # strain at peak tensile stress - da formula concr07
set Ec 4815.61; # Young's modulus - (4815.61 da formula concr07) (2584 da test) (4643.5 da 5000*fc^.5(MPa))
set xcrnu 1.022; # cracking strain - compression (???)
set xcrp 10000; # cracking strain - tension
set ru 6.035; # shape parameter - compression (6.035)
set rt 1.2; # shape parameter - tension
# confined
set fpcc 8.828; # peak compressive stress
set ec0c -0.0075; # strain at peak compressive stress (a rigore sarebbe 0.0061)
set Ecc 5583; # Young's modulus (5583 da concr07)
set xcrnc 1.023; # cracking strain - compression (???)
set rc 9.87; # shape parameter - compression
# Build concrete materials
uniaxialMaterial ConcreteCM 4 -$fpc $ec0 $Ec $ru $xcrnu $ft $et $rt $xcrp -GapClose 0; # unconfined concrete
uniaxialMaterial ConcreteCM 5 -$fpcc $ec0c $Ecc $rc $xcrnc $ft $et $rt $xcrp -GapClose 0; # confined concrete
# ---------------------------------------
# Define 2D RC Panel Material (FSAM)
# ---------------------------------------
# Reinforcing ratios
set rouXw 0.0056; # X web
set rouXb 0.0125 ; # X boundary
set rouYw 0.00828 ; # Y web
set rouYb 0.0157; # Y boundary
# Shear resisting mechanism parameters
set nu 0.2; # friction coefficient
set alfadow 0.01; # dowel action stiffness parameter
# nDMaterial FSAM $mattag $rho $sX $sY $conc $rouX $rouY $nu $alfadow
nDMaterial FSAM 6 0.0 1 2 4 $rouXw $rouYw $nu $alfadow; # Web (unconfined concrete)
nDMaterial FSAM 7 0.0 1 2 5 $rouXb $rouYb $nu $alfadow; # Boundary (confined concrete)
# ------------------------------
# Define SFI_MVLEM elements
# ------------------------------
# element SFI_MVLEM eleTag iNode jNode m c -thick fiberThick -width fiberWidth -mat matTags
element SFI_MVLEM 1 1 2 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 2 2 3 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 3 3 4 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 4 4 5 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 5 5 6 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 6 6 7 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 7 7 8 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 8 8 9 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 9 9 10 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 10 10 11 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 11 11 12 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 12 12 13 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 13 13 14 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 14 14 15 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 15 15 16 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
# ------------------------------
# End of model generation
# ------------------------------
# ---------------------
# Define Axial Load
# ---------------------
set N [expr 520.318]; # kips
# -------------------------------------------------------
# Set parameters for displacement controlled analysis
# -------------------------------------------------------
# vector of displacement-cycle peaks in terms of wall drift ratio
set iDmax "0.00125 0.0025 0.005 0.0075"; # 0.01 0.015 0.02 0.025
set Dincr 0.01; # displacement increment for displacement controlled analysis.
set CycleType Full; # type of cyclic analysis: Full / Push / Half
set Ncycles 1; # specify the number of cycles at each peak
set Tol 1.0e-5;
set LunitTXT "inch";
# ------------------------------
# Gravity load analysis
# ------------------------------
# Generate the model and load input variables
source GloriaSW_16.tcl
# Create a Plain load pattern with a linear TimeSeries
pattern Plain 1 "Linear" {
# Create the nodal load - command: load nodeID xForce yForce
load $IDctrlNode 0.0 [expr -$N] 0.0
}
# ------------------------------
# Analysis generation
# ------------------------------
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-5 and a max number of iterations of 100
test NormDispIncr $Tol 100 0
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the constraint handler, the transformation method
constraints Transformation
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton # -initialThenCurrent
# Create the analysis object
analysis Static
# Run analysis
analyze 10
# ----------------------------------------------------
# Displacement Controlled Analysis
# ----------------------------------------------------
source gravity.tcl
puts "Model generated and gravity load applied successfully";
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
set Fact $H; # scale drift ratio by storey height for displacement cycles
# Set lateral load pattern with a Linear TimeSeries
set Plateral 1.0; # Reference lateral load
pattern Plain 200 "Linear" {
load $IDctrlNode $Plateral 0.0 0.0
}
set load_step 1;
# set up analysis parameters
source LibAnalysisStaticParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
# perform Static Cyclic Displacements Analysis
source LibGeneratePeaks.tcl
set fmt1 "%s Cyclic analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
foreach Dmax $iDmax {
set iDstep [GeneratePeaks $Dmax $Dincr $CycleType $Fact]; # this proc is defined above
for {set i 1} {$i <= $Ncycles} {incr i 1} {
set zeroD 0
set D0 0.0
foreach Dstep $iDstep {
set D1 $Dstep
set Dincr [expr $D1 - $D0]
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
analysis Static
# ----------------------------------------------first analyze command------------------------
set ok [analyze 1]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic;# max no. of iterations performed before "failure to converge" is ret'd
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test EnergyIncr $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormUnbalance $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test NormDispIncr $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test EnergyIncr $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test NormUnbalance $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 3000
set ok [analyze 1 ]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Newton Line Search"
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
}
if {$ok != 0} {
puts "BFGS"
algorithm BFGS
set ok [analyze 1];
}
if {$ok != 0} {
set putout [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
puts $putout
return -1
}; # end if
}; # end if
# -----------------------------------------------------------------------------------------------------
set D0 $D1; # move to next step
# print load step on the screen
puts "Load Step: [expr $load_step]"
set load_step [expr $load_step+1]
}; # end Dstep
}; # end i
}; # end of iDmaxCycl
# -----------------------------------------------------------------------------------------------------
if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
# Print the state at control node
print node $IDctrlNode
shear wall cyclic behaviour
Moderators: silvia, selimgunay, Moderators
-
- Posts: 916
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: shear wall cyclic behaviour
Could you check the force displacement relation until the point of non-convergence? If that looks reasonable, can you try adding new if statements to the analysis for reducing the displacement increment and increasing the convergence tolerance
Re: shear wall cyclic behaviour
Yes, it looks reasonable before failing to converge. I tried to reduce displacement increment and increase the tolerance, but it did not work.
-
- Posts: 916
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: shear wall cyclic behaviour
Please post your solution algorithm that includes reducing the displacement and increasing the tolerance.
Re: shear wall cyclic behaviour
Can I model the Shear wall in the bay of frame with SFI method ?lorenzino wrote: ↑Fri Aug 11, 2017 10:42 am Hi everyone,
I am trying to model a shear wall with SFI-MVLEM. I used Menegotto&Pinto constitutive model for steel and Chang&Mander for concrete. I calculated all the concrete parameters following Chang&Mander formulas, except the values of xcrnu and xcrnc (see the code later). The model seems to work very well but only for the first 4 or 5 displacement-cycle peaks (in total I have 8 peaks). After the first peaks it fails to converge. What should I do? Thanks to everyone is going to help me.
# Wall Geometry
set H 192; # Wall height
set t 12; # Wall thickness
# Create nodes
# node nodeId xCrd yCrd
node 1 0 0;
node 2 0 12.8;
node 3 0 25.6;
node 4 0 38.4;
node 5 0 51.2;
node 6 0 64;
node 7 0 76.8;
node 8 0 89.6;
node 9 0 102.4;
node 10 0 115.2;
node 11 0 128;
node 12 0 140.8;
node 13 0 153.6;
node 14 0 166.4;
node 15 0 179.2;
node 16 0 $H;
# Boundary conditions
fix 1 1 1 1; # Fixed condition at node 1
# Set Control Node and DOF
set IDctrlNode 16;
set IDctrlDOF 1;
# ------------------------------------------------------------------------
# Define uniaxial materials for 2D RC Panel Constitutive Model (FSAM)
# ------------------------------------------------------------------------
# STEEL ...........................................................
# uniaxialMaterial SteelMPF $mattag $fyp $fyn $E0 $bp $bn $R0 $a1 $a2
# steel Xweb and Xboundary (#4)
set fy4 74.25; # fy
set b4 0.012; # strain hardening
# steel Yweb and Yboundary(#6)
set fy6 73.26; # fy
set b6 0.01; # strain hardening
# steel misc
set Es4 22797.05; # Young's modulus
set Es6 24986.36; # Young's modulus
set R0 20.0; # initial value of curvature parameter
set A1 0.925; # curvature degradation parameter
set A2 0.15; # curvature degradation parameter (good value)
# Build steel materials
uniaxialMaterial SteelMPF 1 $fy4 $fy4 $Es4 $b4 $b4 $R0 $A1 $A2; # steel Xweb+Xbound
uniaxialMaterial SteelMPF 2 $fy6 $fy6 $Es6 $b6 $b6 $R0 $A1 $A2; # steel Yweb+Ybound
# CONCRETE ........................................................
# uniaxialMaterial ConcreteCM $mattag $fpcc $epcc $Ec $rc $xcrn $ft $et $rt $xcrp <-GapClose $gap>
# unconfined
set fpc 5.9513; # peak compressive stress - dato da test
set ec0 -0.002196; # strain at peak compressive stress - (0.002303 da test) (concr07 0.002196)
set ft 0.289; # peak tensile stress - da formula concr07
set et 0.00012; # strain at peak tensile stress - da formula concr07
set Ec 4815.61; # Young's modulus - (4815.61 da formula concr07) (2584 da test) (4643.5 da 5000*fc^.5(MPa))
set xcrnu 1.022; # cracking strain - compression (???)
set xcrp 10000; # cracking strain - tension
set ru 6.035; # shape parameter - compression (6.035)
set rt 1.2; # shape parameter - tension
# confined
set fpcc 8.828; # peak compressive stress
set ec0c -0.0075; # strain at peak compressive stress (a rigore sarebbe 0.0061)
set Ecc 5583; # Young's modulus (5583 da concr07)
set xcrnc 1.023; # cracking strain - compression (???)
set rc 9.87; # shape parameter - compression
# Build concrete materials
uniaxialMaterial ConcreteCM 4 -$fpc $ec0 $Ec $ru $xcrnu $ft $et $rt $xcrp -GapClose 0; # unconfined concrete
uniaxialMaterial ConcreteCM 5 -$fpcc $ec0c $Ecc $rc $xcrnc $ft $et $rt $xcrp -GapClose 0; # confined concrete
# ---------------------------------------
# Define 2D RC Panel Material (FSAM)
# ---------------------------------------
# Reinforcing ratios
set rouXw 0.0056; # X web
set rouXb 0.0125 ; # X boundary
set rouYw 0.00828 ; # Y web
set rouYb 0.0157; # Y boundary
# Shear resisting mechanism parameters
set nu 0.2; # friction coefficient
set alfadow 0.01; # dowel action stiffness parameter
# nDMaterial FSAM $mattag $rho $sX $sY $conc $rouX $rouY $nu $alfadow
nDMaterial FSAM 6 0.0 1 2 4 $rouXw $rouYw $nu $alfadow; # Web (unconfined concrete)
nDMaterial FSAM 7 0.0 1 2 5 $rouXb $rouYb $nu $alfadow; # Boundary (confined concrete)
# ------------------------------
# Define SFI_MVLEM elements
# ------------------------------
# element SFI_MVLEM eleTag iNode jNode m c -thick fiberThick -width fiberWidth -mat matTags
element SFI_MVLEM 1 1 2 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 2 2 3 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 3 3 4 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 4 4 5 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 5 5 6 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 6 6 7 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 7 7 8 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 8 8 9 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 9 9 10 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 10 10 11 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 11 11 12 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 12 12 13 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 13 13 14 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 14 14 15 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
element SFI_MVLEM 15 15 16 8 0.4 -thick $t $t $t $t $t $t $t $t -width 8.5 8.5 15.5 15.5 15.5 15.5 8.5 8.5 -mat 7 7 6 6 6 6 7 7
# ------------------------------
# End of model generation
# ------------------------------
# ---------------------
# Define Axial Load
# ---------------------
set N [expr 520.318]; # kips
# -------------------------------------------------------
# Set parameters for displacement controlled analysis
# -------------------------------------------------------
# vector of displacement-cycle peaks in terms of wall drift ratio
set iDmax "0.00125 0.0025 0.005 0.0075"; # 0.01 0.015 0.02 0.025
set Dincr 0.01; # displacement increment for displacement controlled analysis.
set CycleType Full; # type of cyclic analysis: Full / Push / Half
set Ncycles 1; # specify the number of cycles at each peak
set Tol 1.0e-5;
set LunitTXT "inch";
# ------------------------------
# Gravity load analysis
# ------------------------------
# Generate the model and load input variables
source GloriaSW_16.tcl
# Create a Plain load pattern with a linear TimeSeries
pattern Plain 1 "Linear" {
# Create the nodal load - command: load nodeID xForce yForce
load $IDctrlNode 0.0 [expr -$N] 0.0
}
# ------------------------------
# Analysis generation
# ------------------------------
# Create the integration scheme, the LoadControl scheme using steps of 0.1
integrator LoadControl 0.1
# Create the system of equation, a sparse solver with partial pivoting
system BandGeneral
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-5 and a max number of iterations of 100
test NormDispIncr $Tol 100 0
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the constraint handler, the transformation method
constraints Transformation
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton # -initialThenCurrent
# Create the analysis object
analysis Static
# Run analysis
analyze 10
# ----------------------------------------------------
# Displacement Controlled Analysis
# ----------------------------------------------------
source gravity.tcl
puts "Model generated and gravity load applied successfully";
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
set Fact $H; # scale drift ratio by storey height for displacement cycles
# Set lateral load pattern with a Linear TimeSeries
set Plateral 1.0; # Reference lateral load
pattern Plain 200 "Linear" {
load $IDctrlNode $Plateral 0.0 0.0
}
set load_step 1;
# set up analysis parameters
source LibAnalysisStaticParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
# perform Static Cyclic Displacements Analysis
source LibGeneratePeaks.tcl
set fmt1 "%s Cyclic analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
foreach Dmax $iDmax {
set iDstep [GeneratePeaks $Dmax $Dincr $CycleType $Fact]; # this proc is defined above
for {set i 1} {$i <= $Ncycles} {incr i 1} {
set zeroD 0
set D0 0.0
foreach Dstep $iDstep {
set D1 $Dstep
set Dincr [expr $D1 - $D0]
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr
analysis Static
# ----------------------------------------------first analyze command------------------------
set ok [analyze 1]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic;# max no. of iterations performed before "failure to converge" is ret'd
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test EnergyIncr $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormUnbalance $Tol 10000 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test NormDispIncr $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test EnergyIncr $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Newton with InitialThenCurrent Tangent .."
test NormUnbalance $Tol 10000 0
algorithm Newton -initialThenCurrent
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic 500 1
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 3000
set ok [analyze 1 ]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Newton Line Search"
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
}
if {$ok != 0} {
puts "BFGS"
algorithm BFGS
set ok [analyze 1];
}
if {$ok != 0} {
set putout [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
puts $putout
return -1
}; # end if
}; # end if
# -----------------------------------------------------------------------------------------------------
set D0 $D1; # move to next step
# print load step on the screen
puts "Load Step: [expr $load_step]"
set load_step [expr $load_step+1]
}; # end Dstep
}; # end i
}; # end of iDmaxCycl
# -----------------------------------------------------------------------------------------------------
if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
# Print the state at control node
print node $IDctrlNode