During a transient (EQ) analysis, have you used scripts where the time step is changed on the fly? So that a coarser time step is used, and when convergence issues arise, then the time step is made smaller and smaller until convergence or a limit is reached? Then the time step is returned to the larger value to continue the analysis?
If you have scripts that illustrate this technique, could you post them?
thanks,
Jeff
time step changes
Moderators: silvia, selimgunay, Moderators
here is my latest:
[code] # ----------------------------------------------first analyze command------------------------
set ok [analyze $Nsteps $DtAnalysis]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {; # performance is slower inside this loop
puts "Trying Reducing This Time Step by 2 .."
set ok [analyze 1 [expr $DtAnalysis/2]]
if {$ok != 0} {
puts "Trying Reducing This Time Step by 10 .."
set ok [analyze 1 [expr $DtAnalysis/10]]
}
if {$ok != 0} {
puts "Trying Reducing This Time Step by 100 .."
set ok [analyze 1 [expr $DtAnalysis/100]]
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test $testType $Tolerance $maxNumIterConverge $printFlagConverge
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $testType $Tolerance $maxNumIter $printFlag
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch $NewtonLineSearchRatio
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok == 0} {puts "Converged at this step, continuing...."}
}
# -----------------------------------------------------------------------------------------------------[/code]
[code] # ----------------------------------------------first analyze command------------------------
set ok [analyze $Nsteps $DtAnalysis]
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {; # performance is slower inside this loop
puts "Trying Reducing This Time Step by 2 .."
set ok [analyze 1 [expr $DtAnalysis/2]]
if {$ok != 0} {
puts "Trying Reducing This Time Step by 10 .."
set ok [analyze 1 [expr $DtAnalysis/10]]
}
if {$ok != 0} {
puts "Trying Reducing This Time Step by 100 .."
set ok [analyze 1 [expr $DtAnalysis/100]]
}
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test $testType $Tolerance $maxNumIterConverge $printFlagConverge
algorithm Newton -initial
set ok [analyze 1 $DtAnalysis]
test $testType $Tolerance $maxNumIter $printFlag
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch $NewtonLineSearchRatio
set ok [analyze 1 $DtAnalysis]
algorithm $algorithmType
}
if {$ok == 0} {puts "Converged at this step, continuing...."}
}
# -----------------------------------------------------------------------------------------------------[/code]
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104