Hi,
When I was doing dynamic analysis to a bridge, there were a lot of same warnings when I used the
Broyden and BFGS, the warning is as below:
WARNING: CTestEnergyIncr::test() - failed to converge
after: 10 iterations
I'm not sure what the above stands for. The maximum number of iterations is 100.
But at last, the simulation is finished.
However, the results are very different between using the Newton and
Broyden or BFGS. The results are the same for Newton and NewtonLinesearch.
Below is my analysis part of script:
set Tol 1.0e-8;
set maxNumIter 100;
set printFlag 0;
set TestType EnergyIncr;
set NewmarkGamma 0.50;
set NewmarkBeta 0.25;
constraints Transformation;
numberer Plain;
test $TestType $Tol $maxNumIter $printFlag;
system SparseGeneral -piv;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
analysis Transient;
puts "$algorithmType";
# 2D uniform excitation
source ReadSMDFile.tcl;
set iEQ [expr $iM];
set iGMfile "P1$iEQ P2$iEQ";
set iGMdirection "1 2";
#set iGMfact 1;
#set iGMfact1 1;
#set iGMfact2 1;
set iGMfacts "$iGMfact $iGMfact";
set IDloadTag 4;
set iloop "1 2";
foreach Sloop $iloop GMdirection $iGMdirection GMfile $iGMfile GMfact $iGMfacts {
incr IDloadTag;
set inFile "GM/Pulse/$GMfile.AT2";
set outFile "GM/Pulse/$GMfile.g3";
ReadSMDFile $inFile $outFile dt NumPts;
set AccelSeries "Series -dt $dt -filePath $outFile -factor [expr $GMfact*$g]";
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries;
if {$Sloop == 1} {
puts "Horizontal component 1 checked"
};
if {$Sloop == 2} {
puts "Horizontal component 2 checked"
};
};
set DtAnalysis $dt;
set TmaxAnalysis [expr $dt*$NumPts];
set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];
puts "Ground Motion: dt= $dt, NumPts= $NumPts, TmaxAnalysis= $TmaxAnalysis";
#
#
#
for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
set ok [analyze 1 $DtAnalysis];
# Convergence
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm Broyden;
set ok [analyze 1 $DtAnalysis];
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $DtAnalysis];
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $DtAnalysis];
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $DtAnalysis];
algorithm $algorithmType;
};
if {$ok != 0} {
set Nstepsmax [expr $ik-1];
break;
};
#
};
Many thanks,
Xiao.
Dynamic analysis for the bridge
Moderators: silvia, selimgunay, Moderators
-
- Posts: 34
- Joined: Tue Feb 08, 2011 2:44 pm
- Location: UC Berkeley
-
- Posts: 34
- Joined: Tue Feb 08, 2011 2:44 pm
- Location: UC Berkeley
Re: Dynamic analysis for the bridge
Anyone has any idea about it?
Best,
Xiao.
Best,
Xiao.
Re: Dynamic analysis for the bridge
the algorithms are different and can result in different solutions .. if your time steps are too big and the transient analysis long duration the end results can be very different especially if divergence occurs near the start. This is because at the pt where they different analysis start to diverge you have different problems (think of the analysis at the pt of divergence as the start of different analysis with different initial boundary conditions .. if boundary conditions are different the results will be)