Hi everyone,
I am analyzing a framed structure modeled with Elwood shear limit state material and concentrated flexural hinge.
For a sample ground motion (having time step of dt), the solution does not converge for analysis time step, dt_ana of $dt/2 but it does for $dt/10.
I want to incorporate an adaptive algorithm to allow for reducing dt_ana to $dt/10, only where it is required during the given time history. I expect convergenceTest to throw an error when the solution is inappropriate so that reduction in $dt_ana can be triggered.
I use "set ok [analyze 1 $dt/2 $dt/100 $dt/2]" to capture whether solution has converged at each time step. For non-zero values of $ok, I reduce dt_ana.
However, OpenSees never complains about the solution. It shows convergence (i.e. ok = 0) even with an extremely low tolerance (I even tried 1e-10 for RelativeNormDispIncr).
For example- at one instance, top floor displacement with $dt/10 is 16.37 mm whereas with $dt/2 it is 2357.38 mm (arbitrarily high, a clear sign of non convergence) and yet CTestRelativeNormDispIncr returns normRatio of the order of 1e-7 after 13 iterations.
I have tried different SoE solvers---FullGeneral, SparseGEN, ProfileSPD, BandSPD, BandGeneral, and SparseSYM---and different convergenceTest criteria including the energy increment test, but there is no difference in the convergenceTest results.
What else can I try?
-Prakash
Convergence test issue
Moderators: silvia, selimgunay, Moderators
Re: Convergence test issue
convergence has nothing to do with solvers!
if you want to reduce time step only where required DO NOT USE THE analyze option you are using instaed:
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 $dt]
if {$ok != 0} {
set ok [analyze $dt/whatever]
}
set tCurent [getTime[
}
if you want to reduce time step only where required DO NOT USE THE analyze option you are using instaed:
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 $dt]
if {$ok != 0} {
set ok [analyze $dt/whatever]
}
set tCurent [getTime[
}
Re: Convergence test issue
Frank, this did not help. The problem with my analysis is that condition "if {$ok != 0}" is NOT invoked despite erroneous solution (I know this from the results of the analysis with smaller time step). This is how the time histories for two cases with analysis time steps of $dt/2 and $dt/10 look like:
https://drive.google.com/file/d/0B4q3Ss ... ZQa1U/view
https://drive.google.com/file/d/0B4q3Ss ... ZQa1U/view