Fixing Convergence Error
Moderators: silvia, selimgunay, Moderators
Fixing Convergence Error
Dear All,
I was doing a dynamic analysis and I got this error at the end. It will be great to let me know how to fix it!
WARNING: CTestNormDispIncr::test() - failed to converge
after: 15 iterations current Norm: 0.153263 (max: 0.001, Norm deltaR: 315.903)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.015
OpenSees > analyze failed, returned: -3 error flag
These are my parameters for the transient analysis:
# analysis objects
constraints Transformation
test NormDispIncr 1e-3 15 1
algorithm Newton
numberer RCM
system ProfileSPD
integrator Newmark $gamma $beta
rayleigh $a0 $a1 0.0 0.0
analysis Transient
analyze $nSteps $dT
Many thanks!
Bests,
I was doing a dynamic analysis and I got this error at the end. It will be great to let me know how to fix it!
WARNING: CTestNormDispIncr::test() - failed to converge
after: 15 iterations current Norm: 0.153263 (max: 0.001, Norm deltaR: 315.903)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.015
OpenSees > analyze failed, returned: -3 error flag
These are my parameters for the transient analysis:
# analysis objects
constraints Transformation
test NormDispIncr 1e-3 15 1
algorithm Newton
numberer RCM
system ProfileSPD
integrator Newmark $gamma $beta
rayleigh $a0 $a1 0.0 0.0
analysis Transient
analyze $nSteps $dT
Many thanks!
Bests,
Re: Fixing Convergence Error
The error says that the test you used, failed.
WARNING: CTestNormDispIncr::test() - failed to converge
The maximum tolerant for the test was 1.e-3 (that you setted in the command) but the model attained a value of 0.153263, thus it stopped respecting the tolerance you gave.
after: 15 iterations current Norm: 0.153263 (max: 0.001, Norm deltaR: 315.903)
Now, there is no answer to your question "It will be great to let me know how to fix it!", cuz It all depends on your model and how you defined it.
You can try to lower your time step or incr. damping, but if the model isn't define correctly, it will still fails. Gl.
WARNING: CTestNormDispIncr::test() - failed to converge
The maximum tolerant for the test was 1.e-3 (that you setted in the command) but the model attained a value of 0.153263, thus it stopped respecting the tolerance you gave.
after: 15 iterations current Norm: 0.153263 (max: 0.001, Norm deltaR: 315.903)
Now, there is no answer to your question "It will be great to let me know how to fix it!", cuz It all depends on your model and how you defined it.
You can try to lower your time step or incr. damping, but if the model isn't define correctly, it will still fails. Gl.
Re: Fixing Convergence Error
Many thanks for your reply!
Actually I did the static analysis with the same model and it works with no problem. The gravity loading also works just for dynamic analysis by defining the time history loading gives this convergence error at the end! I will try the way you mentioned and hope it works!
Bests,
Actually I did the static analysis with the same model and it works with no problem. The gravity loading also works just for dynamic analysis by defining the time history loading gives this convergence error at the end! I will try the way you mentioned and hope it works!
Bests,
Re: Fixing Convergence Error
Hi again,
I tried the ways that you mentioned as decreasing the time step and the tolerance, increasing the gamma value in Newmark method and damping; the results got better and the last error is as follows! but still error!
WARNING: CTestNormDispIncr::test() - failed to converge
after: 15 iterations current Norm: 0.000115426 (max: 0.0001, Norm deltaR: 0.122051)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.0015
OpenSees > analyze failed, returned: -3 error flag
Finished with dynamic analysis...
Will appreciate any suggestion!
Many thanks,
I tried the ways that you mentioned as decreasing the time step and the tolerance, increasing the gamma value in Newmark method and damping; the results got better and the last error is as follows! but still error!
WARNING: CTestNormDispIncr::test() - failed to converge
after: 15 iterations current Norm: 0.000115426 (max: 0.0001, Norm deltaR: 0.122051)
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 0.0015
OpenSees > analyze failed, returned: -3 error flag
Finished with dynamic analysis...
Will appreciate any suggestion!
Many thanks,
-
- Posts: 108
- Joined: Mon Sep 16, 2013 1:14 pm
- Location: University of Auckland
Re: Fixing Convergence Error
Are you using adaptive solutions to overcome converging problems? or you are just selecting a fixed set of parameters?
Re: Fixing Convergence Error
These are my parameters defined for the transient analysis which gives me error! I decreased the tolerance. These parameters are fixed like the rayleigh coefficients,...
# analysis objects
constraints Transformation
test NormDispIncr 1e-4 15 1
algorithm Newton
numberer RCM
system ProfileSPD
integrator Newmark $gamma $beta
rayleigh $a0 $a1 0.0 0.0
analysis Transient
analyze $nSteps $dT
# analysis objects
constraints Transformation
test NormDispIncr 1e-4 15 1
algorithm Newton
numberer RCM
system ProfileSPD
integrator Newmark $gamma $beta
rayleigh $a0 $a1 0.0 0.0
analysis Transient
analyze $nSteps $dT
-
- Posts: 913
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: Fixing Convergence Error
You can use adaptive solution techniques, an example of which you can find below.
set Tol 1.0e-8;
set maxNumIter 100;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType EnergyIncr;
set algorithmType NewtonLineSearch;
for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
puts "$ik"
# puts "$ik"
set ok [analyze 1 $dtForAnalysis]
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying OS ...";
integrator AlphaOS 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying OSG ...";
integrator AlphaOSGeneralized 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-7 ...";
test $TestType 1.0e-7 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
set Nstepsmax [expr $ik-1]
break;
}
}
if {[expr $ik-1] == $Nsteps} {
set AnalysisA [expr 1] } else {
set AnalysisA [expr 0] };
puts "Analysis completion=$AnalysisA"
set fileid10 [open "ConvergenceIndicator.txt" a];
puts $fileid10 "$AnalysisA"
close $fileid10
set Tol 1.0e-8;
set maxNumIter 100;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType EnergyIncr;
set algorithmType NewtonLineSearch;
for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
puts "$ik"
# puts "$ik"
set ok [analyze 1 $dtForAnalysis]
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying OS ...";
integrator AlphaOS 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying OSG ...";
integrator AlphaOSGeneralized 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-7 ...";
test $TestType 1.0e-7 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
set Nstepsmax [expr $ik-1]
break;
}
}
if {[expr $ik-1] == $Nsteps} {
set AnalysisA [expr 1] } else {
set AnalysisA [expr 0] };
puts "Analysis completion=$AnalysisA"
set fileid10 [open "ConvergenceIndicator.txt" a];
puts $fileid10 "$AnalysisA"
close $fileid10
Re: Fixing Convergence Error
selimgunay wrote:
> You can use adaptive solution techniques, an example of which you can find below.
>
> set Tol 1.0e-8;
> set maxNumIter 100;
> set printFlag 0;
> set NewmarkGamma 0.5;
> set NewmarkBeta 0.25;
> set TestType EnergyIncr;
>
> set algorithmType NewtonLineSearch;
> for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
> puts "$ik"
> # puts "$ik"
> set ok [analyze 1 $dtForAnalysis]
> # Convergence
> if {$ok != 0} {
> puts "Trying Bisection ...";
> algorithm NewtonLineSearch <-type Bisection>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Secant ...";
> algorithm NewtonLineSearch <-type Secant>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying RegulaFalsi ...";
> algorithm NewtonLineSearch <-type RegulaFalsi>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying KrylovNewton ...";
> algorithm KrylovNewton;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Newton ...";
> algorithm Newton;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying BFGS ...";
> algorithm BFGS;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Broyden ...";
> algorithm Broyden;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying HHT 0.9 ...";
> integrator HHT 0.9;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> };
> if {$ok != 0} {
> puts "Trying OS ...";
> integrator AlphaOS 1.00;
> algorithm Linear;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying OSG ...";
> integrator AlphaOSGeneralized 1.00;
> algorithm Linear;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying more iterations...";
> test $TestType $Tol 1000 $printFlag;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-7 ...";
> test $TestType 1.0e-7 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-6 ...";
> test $TestType 1.0e-6 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-5 ...";
> test $TestType 1.0e-5 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/2.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/4.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/8.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/16.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/32.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/64.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
>
>
>
>
>
> if {$ok != 0} {
> set Nstepsmax [expr $ik-1]
> break;
> }
>
> }
>
> if {[expr $ik-1] == $Nsteps} {
>
> set AnalysisA [expr 1] } else {
>
> set AnalysisA [expr 0] };
>
> puts "Analysis completion=$AnalysisA"
>
> set fileid10 [open "ConvergenceIndicator.txt" a];
> puts $fileid10 "$AnalysisA"
> close $fileid10
So many thanks for your kind cooperation. I tried and it works!
Bests,
> You can use adaptive solution techniques, an example of which you can find below.
>
> set Tol 1.0e-8;
> set maxNumIter 100;
> set printFlag 0;
> set NewmarkGamma 0.5;
> set NewmarkBeta 0.25;
> set TestType EnergyIncr;
>
> set algorithmType NewtonLineSearch;
> for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
> puts "$ik"
> # puts "$ik"
> set ok [analyze 1 $dtForAnalysis]
> # Convergence
> if {$ok != 0} {
> puts "Trying Bisection ...";
> algorithm NewtonLineSearch <-type Bisection>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Secant ...";
> algorithm NewtonLineSearch <-type Secant>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying RegulaFalsi ...";
> algorithm NewtonLineSearch <-type RegulaFalsi>;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying KrylovNewton ...";
> algorithm KrylovNewton;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Newton ...";
> algorithm Newton;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying BFGS ...";
> algorithm BFGS;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying Broyden ...";
> algorithm Broyden;
> set ok [analyze 1 $dtForAnalysis]
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying HHT 0.9 ...";
> integrator HHT 0.9;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> };
> if {$ok != 0} {
> puts "Trying OS ...";
> integrator AlphaOS 1.00;
> algorithm Linear;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying OSG ...";
> integrator AlphaOSGeneralized 1.00;
> algorithm Linear;
> set ok [analyze 1 $dtForAnalysis]
> # integrator TRBDF2;
> integrator Newmark $NewmarkGamma $NewmarkBeta;
> algorithm $algorithmType;
> };
> if {$ok != 0} {
> puts "Trying more iterations...";
> test $TestType $Tol 1000 $printFlag;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-7 ...";
> test $TestType 1.0e-7 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-6 ...";
> test $TestType 1.0e-6 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-5 ...";
> test $TestType 1.0e-5 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/2.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/4.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/8.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/16.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/32.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
> if {$ok != 0} {
> puts "Trying tolerance 1.0e-3 ...";
> test $TestType 1.0e-3 $maxNumIter 0;
> set ok [analyze 1 $dtForAnalysis/64.0]
> test $TestType $Tol $maxNumIter $printFlag;
> };
>
>
>
>
>
> if {$ok != 0} {
> set Nstepsmax [expr $ik-1]
> break;
> }
>
> }
>
> if {[expr $ik-1] == $Nsteps} {
>
> set AnalysisA [expr 1] } else {
>
> set AnalysisA [expr 0] };
>
> puts "Analysis completion=$AnalysisA"
>
> set fileid10 [open "ConvergenceIndicator.txt" a];
> puts $fileid10 "$AnalysisA"
> close $fileid10
So many thanks for your kind cooperation. I tried and it works!
Bests,