#INF and #QNAN - "NormDispIncr" Test command

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
polimeruvijay
Posts: 43
Joined: Fri Jan 29, 2016 10:20 pm

#INF and #QNAN - "NormDispIncr" Test command

Post by polimeruvijay » Wed Dec 27, 2017 2:34 am

Dear OpenSEES Community members

I am analysing a bridge column under earthquake load, which is 29 sec long. I am using "transient" analysis command. With an adaptive step size algorithm, The maximum and minimum step sizes used in the analysis are 0.01 and 0.0001 with a decrement 0.00001. i.e. the program will continuously change the step size between max and minimum values until it get convergence.

In the Initial stages, whenever the algorithm did not converge, I am getting a warning like this

after: 50 iterations current Norm: 3.53763 (max: 0.001, Norm deltaR: 5.10108e+009)
ModifiedNewton::solveCurrentStep() -the ConvergenceTest object failed in test()
WARNING: CTestNormDispIncr::test() - failed to converge

But, after some time, I am getting a peculiar warning from the test command "NormDispIncr" like this:

WARNING: CTestNormDispIncr::test() - failed to converge
after: 11 iterations current Norm: 1.#INF (max: 0.001, Norm deltaR: 1.#QNAN)
ModifiedNewton::solveCurrentStep() -the ConvergenceTest object failed in test()

The program is hardly running upto 9sec only, Could you please help me debug this error...

Thank You very much for sparing your valuable time in reading this message.


Below mentioned is my ground motion algorithm,

## ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------


# Uniform Earthquake ground motion (uniform acceleration input at all support nodes)
set GMdirection 1; # ground-motion direction
set GMfile $eq_name ; # ground-motion filenames
set GMfact 1.; # ground-motion scaling factor --- See Factor change later


constraints Transformation ;

numberer Plain

system SparseGeneral -piv

set Tol_1 1e-5; # Convergence Test: tolerance
set Tol_2 1e-3;
set maxNumIter 100; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol_1 $maxNumIter $printFlag;


set algorithmType Newton
algorithm $algorithmType;


set NewmarkGamma 0.5; # Newmark-integrator gamma parameter (also HHT)
set NewmarkBeta 0.25; # Newmark-integrator beta parameter
integrator Newmark $NewmarkGamma $NewmarkBeta

analysis Transient

# define DAMPING--------------------------------------------------------------------------------------

set xDamp 0.05;
set lambda [eigen 1];
set omega [expr pow($lambda,0.5)];
set alphaM 0.;
set betaKcurr 0.;
set betaKcomm [expr 2.*$xDamp/($omega)];
set betaKinit 0.;
# define damping
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;

set Timepd [expr 2*3.14/$omega];
set fileid1 [open "[concat Outputs/Data_$number/Modal.eig]" "w"]
puts $fileid1 "$Timepd";
close $fileid1



# Uniform EXCITATION: acceleration input
set IDloadTag 400; # load tag
set dt $Dt; # time step for input ground motion
set GMCoeff 9810.0; # data in input file is in g Units -- ACCELERATION TH (9810 ~= 10000)
set AccelSeries "Series -dt $dt -filePath $GMfile -factor $GMCoeff"; # time series information
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries ; # create Unifform excitation


# set up ground-motion-analysis parameters

# load Step size history

set filename "DtStepSize.dat"
set DtStepSizeID [open $filename r]; #Load the vector with the step sizes
set DtStepSizeValues [read $DtStepSizeID]
close $DtStepSizeID


set Dt_Factor 10;


set DtAnalysis [expr $Dt/$Dt_Factor]; # time-step Dt for lateral analysis
set TmaxAnalysis [expr int(($eq_length)*$DtAnalysis*$Dt_Factor)];

puts "******************************************************************************************************************************************************";
puts "********* DtAnalysis = $DtAnalysis and TmaxAnalysis = $TmaxAnalysis and Length = [expr int($TmaxAnalysis/$DtAnalysis)] ***********";
puts "******************************************************************************************************************************************************";


set Nsteps [expr int($TmaxAnalysis/$DtAnalysis)];

set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis];
set controlTime [getTime];
puts "Current Time in the Domain = $controlTime"
}


if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {

set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
puts "Current Time in the Domain = $controlTime"
if {$ok != 0} {

foreach DtStepFactor $DtStepSizeValues {

set DtStep [expr $DtAnalysis*$DtStepFactor]

puts "******************************************************************************************************************************************************";
puts "********* DtStep = $DtStep and TmaxAnalysis = $TmaxAnalysis";
puts "******************************************************************************************************************************************************";


if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test EnergyIncr $Tol_2 100 0
algorithm Newton -initial
set ok [analyze 1 $DtStep]
test $TestType $Tol_2 $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtStep]
algorithm $algorithmType
}


if {$ok == 0} {
test $TestType $Tol_1 $maxNumIter 0
break
}
}
}
}
}; # end if ok !0


if {$ok == 0} {
puts "#####################################################";
puts "-------------Ground Motion analysis Success----------";
puts "#####################################################";

} else {
puts "#####################################################";
puts "-------------Ground Motion analysis Failed-----------";
puts "#####################################################";
}


puts "---------------------------------------------------------------------------------------------------------"
puts "Ground Motion Done. End Time: [getTime]"
puts "---------------------------------------------------------------------------------------------------------"

}

fmk
Site Admin
Posts: 5883
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: #INF and #QNAN - "NormDispIncr" Test command

Post by fmk » Wed Jan 03, 2018 3:32 pm

the "problem" probably lies in the structural model, basically your model cannot handle this earthquake. it could e a modeling error or simply mean that the building cannot survive whatever motion you are throwing at it .. you can turn off convergence checking by cutting time step and switching to explicit algo.

Post Reply