I recently made a model representing a generic frame connected with a piece of rocking column by rigid links. This model is first pushed to 465 mm
by displacement control, which runs very well. Then it is released by "remove LoadPattern" command to simulate the vibration. The dynamic analysis, however, cannot converge. I tried a very loose convergence tolerance, 0.1 for displacement, but the analysis stops in 100 steps. I think it may be due to the rigidity of the links, but it still does not work well. I wonder if anybody here can give a help. Thanks in advance.
Modeling details:
column: nonlinearBeamWithHinges
beams: zeroLengthSection
Rocking column: nonlinearBeamWithHinges, but the yielding strength is
very big
Links: Truss, with a large stiffness and elastic
Modeling source:
-----------------------------------------------------------
##### ----- External functions ----- #####
proc BoxSec {secID matID d b tw tf nfdw nftw nfbf nftf} {
set dw [expr $d - 2 * $tf]
set bw [expr $b - 2 * $tw]
set y1 [expr -$d/2]
set y2 [expr -$dw/2]
set y3 [expr $dw/2]
set y4 [expr $d/2]
set z1 [expr -$b/2]
set z2 [expr -$bw/2]
set z3 [expr $bw/2]
set z4 [expr $b/2]
section fiberSec $secID {
patch quad $matID $nfbf $nftf $y1 $z4 $y1 $z1 $y2 $z1 $y2 $z4
patch quad $matID $nftw $nfdw $y2 $z2 $y2 $z1 $y3 $z1 $y3 $z2
patch quad $matID $nftw $nfdw $y2 $z4 $y2 $z3 $y3 $z3 $y3 $z4
patch quad $matID $nfbf $nftf $y3 $z4 $y3 $z1 $y4 $z1 $y4 $z4
}
}
model BasicBuilder -ndm 2 -ndf 3
set nBays 6
# Nodes of moment frame
node 1 0.0 0.0
node 2 0.0 5000.0
node 21 0.0 5000.0
node 3 0.0 8500.0
node 31 0.0 8500.0
node 4 0.0 12000.0
node 41 0.0 12000.0
node 5 0.0 15500.0
node 51 0.0 15500.0
node 11 -1000.0 0.0
node 12 -1000.0 5000.0
node 13 -1000.0 8500.0
node 14 -1000.0 12000.0
node 15 -1000.0 15500.0
# Define restraints
fix 1 1 1 1
fix 21 1 1 1
fix 31 1 1 1
fix 41 1 1 1
fix 51 1 1 1
fix 11 1 1 0
# Definition of material
set matColUpper 1
set matColBase 2
set matBeam1 3
set matBeam2 4
set matBeam3 5
set matBeam4 6
set matColRock 7
set matLink 8
uniaxialMaterial Steel01 $matColUpper [expr 205.84*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColBase [expr $Ds/0.10*72.65*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColRock 1.0e11 [expr 2.910846e5*$Stiff] 0.01
uniaxialMaterial Elastic $matLink 2.06e10
# From section dimensions
uniaxialMaterial Steel01 $matBeam1 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam2 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam3 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam4 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
# Definition of sections for beams and columns
set Sec_ColUpper 1
set Sec_ColBase 2
set Sec_Beam1 3
set Sec_Beam2 4
set Sec_Beam3 5
set Sec_Beam4 6
set Sec_ColRock 7
BoxSec $Sec_ColUpper $matColUpper 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColBase $matColBase 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColRock $matColRock 300.0 300.0 9.0 9.0 20 1 1 10
section Uniaxial $Sec_Beam1 $matBeam1 Mz
section Uniaxial $Sec_Beam2 $matBeam2 Mz
section Uniaxial $Sec_Beam3 $matBeam3 Mz
section Uniaxial $Sec_Beam4 $matBeam4 Mz
element zeroLengthSection 11 2 21 $Sec_Beam1
element zeroLengthSection 12 3 31 $Sec_Beam2
element zeroLengthSection 13 4 41 $Sec_Beam3
element zeroLengthSection 14 5 51 $Sec_Beam4
# Define frame elements
geomTransf Linear 1
# Columns
element nonlinearBeamColumn 1 1 2 5 $Sec_ColBase 1
element nonlinearBeamColumn 2 2 3 5 $Sec_ColUpper 1
element nonlinearBeamColumn 3 3 4 5 $Sec_ColUpper 1
element nonlinearBeamColumn 4 4 5 5 $Sec_ColUpper 1
# Rocking Columns
element nonlinearBeamColumn 21 11 12 5 $Sec_ColRock 1
element nonlinearBeamColumn 22 12 13 5 $Sec_ColRock 1
element nonlinearBeamColumn 23 13 14 5 $Sec_ColRock 1
element nonlinearBeamColumn 24 14 15 5 $Sec_ColRock 1
# Links
element truss 31 12 2 1.0e0 $matLink
element truss 32 13 3 1.0e0 $matLink
element truss 33 14 4 1.0e0 $matLink
element truss 34 15 5 1.0e0 $matLink
mass 2 55.89 55.89 0.0
mass 3 54.70 54.70 0.0
mass 4 54.24 54.24 0.0
mass 5 67.78 67.78 0.0
set a [eigen 3]
set OM1 [lindex $a 0]
set OM2 [lindex $a 1]
set OM3 [lindex $a 2]
set Period1 [expr 2*3.1415926/sqrt($OM1)]
set Period2 [expr 2*3.1415926/sqrt($OM2)]
set Period3 [expr 2*3.1415926/sqrt($OM3)]
puts "$Ds and $Stiff: Periods are $Period1, $Period2, $Period3!"
recorder Node -file "Disp.txt" -time -node 2 3 4 5 -dof 1 3 disp
recorder Node -file "Force.txt" -time -node 21 31 41 51 -dof 3 reaction
recorder Node -file "BaseForce.txt" -time -node 1 11 -dof 1 reaction
recorder display PlanerFrames 0 0 600 480 -wipe
prp 36000 20000 300000
vup 0 1 0
display 1 -1 10
# Define seismic force pattern
pattern Plain 2 "Linear" {
load 5 [expr $Ds/0.10*108.87] 0.0 0.0
load 4 [expr $Ds/0.10*53.72] 0.0 0.0
load 3 [expr $Ds/0.10*40.73] 0.0 0.0
load 2 [expr $Ds/0.10*29.30] 0.0 0.0
}
constraints Transformation
numberer RCM
system SparseGeneral
test EnergyIncr 1.0e-12 100
algorithm Newton
integrator DisplacementControl 5 1 1.0
analysis Static
analyze 465
# Define dynamic analysis
loadConst -time 0.0
set a1 [expr 2*0.02/sqrt($OM1)]
rayleigh 0.0 0.0 $a1 0.0
remove loadPattern 2
test NormDispIncr 1.0e-2 100
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 0.01
wipe
Dynamic analysis convergence problem
Moderators: silvia, selimgunay, Moderators
Sorry made a mistake, the source file should be:
------------------------
##### ----- External functions ----- #####
proc BoxSec {secID matID d b tw tf nfdw nftw nfbf nftf} {
set dw [expr $d - 2 * $tf]
set bw [expr $b - 2 * $tw]
set y1 [expr -$d/2]
set y2 [expr -$dw/2]
set y3 [expr $dw/2]
set y4 [expr $d/2]
set z1 [expr -$b/2]
set z2 [expr -$bw/2]
set z3 [expr $bw/2]
set z4 [expr $b/2]
section fiberSec $secID {
patch quad $matID $nfbf $nftf $y1 $z4 $y1 $z1 $y2 $z1 $y2 $z4
patch quad $matID $nftw $nfdw $y2 $z2 $y2 $z1 $y3 $z1 $y3 $z2
patch quad $matID $nftw $nfdw $y2 $z4 $y2 $z3 $y3 $z3 $y3 $z4
patch quad $matID $nfbf $nftf $y3 $z4 $y3 $z1 $y4 $z1 $y4 $z4
}
}
model BasicBuilder -ndm 2 -ndf 3
set nBays 6
# Nodes of moment frame
node 1 0.0 0.0
node 2 0.0 5000.0
node 21 0.0 5000.0
node 3 0.0 8500.0
node 31 0.0 8500.0
node 4 0.0 12000.0
node 41 0.0 12000.0
node 5 0.0 15500.0
node 51 0.0 15500.0
node 11 -1000.0 0.0
node 12 -1000.0 5000.0
node 13 -1000.0 8500.0
node 14 -1000.0 12000.0
node 15 -1000.0 15500.0
# Define restraints
fix 1 1 1 1
fix 21 1 1 1
fix 31 1 1 1
fix 41 1 1 1
fix 51 1 1 1
fix 11 1 1 0
# Definition of material
set matColUpper 1
set matColBase 2
set matBeam1 3
set matBeam2 4
set matBeam3 5
set matBeam4 6
set matColRock 7
set matLink 8
uniaxialMaterial Steel01 $matColUpper [expr 205.84*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColBase [expr 72.65*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColRock 1.0e11 [expr 2.910846e5] 0.01
uniaxialMaterial Elastic $matLink 2.06e10
# From section dimensions
uniaxialMaterial Steel01 $matBeam1 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam2 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam3 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam4 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
# Definition of sections for beams and columns
set Sec_ColUpper 1
set Sec_ColBase 2
set Sec_Beam1 3
set Sec_Beam2 4
set Sec_Beam3 5
set Sec_Beam4 6
set Sec_ColRock 7
BoxSec $Sec_ColUpper $matColUpper 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColBase $matColBase 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColRock $matColRock 300.0 300.0 9.0 9.0 20 1 1 10
section Uniaxial $Sec_Beam1 $matBeam1 Mz
section Uniaxial $Sec_Beam2 $matBeam2 Mz
section Uniaxial $Sec_Beam3 $matBeam3 Mz
section Uniaxial $Sec_Beam4 $matBeam4 Mz
element zeroLengthSection 11 2 21 $Sec_Beam1
element zeroLengthSection 12 3 31 $Sec_Beam2
element zeroLengthSection 13 4 41 $Sec_Beam3
element zeroLengthSection 14 5 51 $Sec_Beam4
# Define frame elements
geomTransf Linear 1
# Columns
element nonlinearBeamColumn 1 1 2 5 $Sec_ColBase 1
element nonlinearBeamColumn 2 2 3 5 $Sec_ColUpper 1
element nonlinearBeamColumn 3 3 4 5 $Sec_ColUpper 1
element nonlinearBeamColumn 4 4 5 5 $Sec_ColUpper 1
# Rocking Columns
element nonlinearBeamColumn 21 11 12 5 $Sec_ColRock 1
element nonlinearBeamColumn 22 12 13 5 $Sec_ColRock 1
element nonlinearBeamColumn 23 13 14 5 $Sec_ColRock 1
element nonlinearBeamColumn 24 14 15 5 $Sec_ColRock 1
# Links
element truss 31 12 2 1.0e0 $matLink
element truss 32 13 3 1.0e0 $matLink
element truss 33 14 4 1.0e0 $matLink
element truss 34 15 5 1.0e0 $matLink
mass 2 55.89 55.89 0.0
mass 3 54.70 54.70 0.0
mass 4 54.24 54.24 0.0
mass 5 67.78 67.78 0.0
set a [eigen 3]
set OM1 [lindex $a 0]
set OM2 [lindex $a 1]
set OM3 [lindex $a 2]
set Period1 [expr 2*3.1415926/sqrt($OM1)]
set Period2 [expr 2*3.1415926/sqrt($OM2)]
set Period3 [expr 2*3.1415926/sqrt($OM3)]
puts "Periods are $Period1, $Period2, $Period3!"
recorder Node -file "Disp.txt" -time -node 2 3 4 5 -dof 1 3 disp
recorder Node -file "Force.txt" -time -node 21 31 41 51 -dof 3 reaction
recorder Node -file "BaseForce.txt" -time -node 1 11 -dof 1 reaction
recorder display PlanerFrames 0 0 600 480 -wipe
prp 36000 20000 300000
vup 0 1 0
display 1 -1 10
# Define seismic force pattern
pattern Plain 2 "Linear" {
load 5 [expr 108.87] 0.0 0.0
load 4 [expr 53.72] 0.0 0.0
load 3 [expr 40.73] 0.0 0.0
load 2 [expr 29.30] 0.0 0.0
}
constraints Transformation
numberer RCM
system SparseGeneral
test EnergyIncr 1.0e-12 100
algorithm Newton
integrator DisplacementControl 5 1 1.0
analysis Static
analyze 465
# Define dynamic analysis
loadConst -time 0.0
set a1 [expr 2*0.02/sqrt($OM1)]
rayleigh 0.0 0.0 $a1 0.0
remove loadPattern 2
test NormDispIncr 1.0e-2 100
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 0.001
wipe
------------------------
##### ----- External functions ----- #####
proc BoxSec {secID matID d b tw tf nfdw nftw nfbf nftf} {
set dw [expr $d - 2 * $tf]
set bw [expr $b - 2 * $tw]
set y1 [expr -$d/2]
set y2 [expr -$dw/2]
set y3 [expr $dw/2]
set y4 [expr $d/2]
set z1 [expr -$b/2]
set z2 [expr -$bw/2]
set z3 [expr $bw/2]
set z4 [expr $b/2]
section fiberSec $secID {
patch quad $matID $nfbf $nftf $y1 $z4 $y1 $z1 $y2 $z1 $y2 $z4
patch quad $matID $nftw $nfdw $y2 $z2 $y2 $z1 $y3 $z1 $y3 $z2
patch quad $matID $nftw $nfdw $y2 $z4 $y2 $z3 $y3 $z3 $y3 $z4
patch quad $matID $nfbf $nftf $y3 $z4 $y3 $z1 $y4 $z1 $y4 $z4
}
}
model BasicBuilder -ndm 2 -ndf 3
set nBays 6
# Nodes of moment frame
node 1 0.0 0.0
node 2 0.0 5000.0
node 21 0.0 5000.0
node 3 0.0 8500.0
node 31 0.0 8500.0
node 4 0.0 12000.0
node 41 0.0 12000.0
node 5 0.0 15500.0
node 51 0.0 15500.0
node 11 -1000.0 0.0
node 12 -1000.0 5000.0
node 13 -1000.0 8500.0
node 14 -1000.0 12000.0
node 15 -1000.0 15500.0
# Define restraints
fix 1 1 1 1
fix 21 1 1 1
fix 31 1 1 1
fix 41 1 1 1
fix 51 1 1 1
fix 11 1 1 0
# Definition of material
set matColUpper 1
set matColBase 2
set matBeam1 3
set matBeam2 4
set matBeam3 5
set matBeam4 6
set matColRock 7
set matLink 8
uniaxialMaterial Steel01 $matColUpper [expr 205.84*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColBase [expr 72.65*($nBays+1)] [expr 2.910846e5*($nBays+1)] 0.0001
uniaxialMaterial Steel01 $matColRock 1.0e11 [expr 2.910846e5] 0.01
uniaxialMaterial Elastic $matLink 2.06e10
# From section dimensions
uniaxialMaterial Steel01 $matBeam1 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam2 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam3 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
uniaxialMaterial Steel01 $matBeam4 [expr 2*1.09851e9] [expr 2*2.1970244E+11] 0.0001
# Definition of sections for beams and columns
set Sec_ColUpper 1
set Sec_ColBase 2
set Sec_Beam1 3
set Sec_Beam2 4
set Sec_Beam3 5
set Sec_Beam4 6
set Sec_ColRock 7
BoxSec $Sec_ColUpper $matColUpper 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColBase $matColBase 300.0 300.0 9.0 9.0 20 1 1 10
BoxSec $Sec_ColRock $matColRock 300.0 300.0 9.0 9.0 20 1 1 10
section Uniaxial $Sec_Beam1 $matBeam1 Mz
section Uniaxial $Sec_Beam2 $matBeam2 Mz
section Uniaxial $Sec_Beam3 $matBeam3 Mz
section Uniaxial $Sec_Beam4 $matBeam4 Mz
element zeroLengthSection 11 2 21 $Sec_Beam1
element zeroLengthSection 12 3 31 $Sec_Beam2
element zeroLengthSection 13 4 41 $Sec_Beam3
element zeroLengthSection 14 5 51 $Sec_Beam4
# Define frame elements
geomTransf Linear 1
# Columns
element nonlinearBeamColumn 1 1 2 5 $Sec_ColBase 1
element nonlinearBeamColumn 2 2 3 5 $Sec_ColUpper 1
element nonlinearBeamColumn 3 3 4 5 $Sec_ColUpper 1
element nonlinearBeamColumn 4 4 5 5 $Sec_ColUpper 1
# Rocking Columns
element nonlinearBeamColumn 21 11 12 5 $Sec_ColRock 1
element nonlinearBeamColumn 22 12 13 5 $Sec_ColRock 1
element nonlinearBeamColumn 23 13 14 5 $Sec_ColRock 1
element nonlinearBeamColumn 24 14 15 5 $Sec_ColRock 1
# Links
element truss 31 12 2 1.0e0 $matLink
element truss 32 13 3 1.0e0 $matLink
element truss 33 14 4 1.0e0 $matLink
element truss 34 15 5 1.0e0 $matLink
mass 2 55.89 55.89 0.0
mass 3 54.70 54.70 0.0
mass 4 54.24 54.24 0.0
mass 5 67.78 67.78 0.0
set a [eigen 3]
set OM1 [lindex $a 0]
set OM2 [lindex $a 1]
set OM3 [lindex $a 2]
set Period1 [expr 2*3.1415926/sqrt($OM1)]
set Period2 [expr 2*3.1415926/sqrt($OM2)]
set Period3 [expr 2*3.1415926/sqrt($OM3)]
puts "Periods are $Period1, $Period2, $Period3!"
recorder Node -file "Disp.txt" -time -node 2 3 4 5 -dof 1 3 disp
recorder Node -file "Force.txt" -time -node 21 31 41 51 -dof 3 reaction
recorder Node -file "BaseForce.txt" -time -node 1 11 -dof 1 reaction
recorder display PlanerFrames 0 0 600 480 -wipe
prp 36000 20000 300000
vup 0 1 0
display 1 -1 10
# Define seismic force pattern
pattern Plain 2 "Linear" {
load 5 [expr 108.87] 0.0 0.0
load 4 [expr 53.72] 0.0 0.0
load 3 [expr 40.73] 0.0 0.0
load 2 [expr 29.30] 0.0 0.0
}
constraints Transformation
numberer RCM
system SparseGeneral
test EnergyIncr 1.0e-12 100
algorithm Newton
integrator DisplacementControl 5 1 1.0
analysis Static
analyze 465
# Define dynamic analysis
loadConst -time 0.0
set a1 [expr 2*0.02/sqrt($OM1)]
rayleigh 0.0 0.0 $a1 0.0
remove loadPattern 2
test NormDispIncr 1.0e-2 100
integrator Newmark 0.5 0.25
analysis Transient
analyze 2000 0.001
wipe