Hello, I am running into many errors when completing a transient analysis of an earthquake. My code is below. There is also a CFFT model build portion of the code that I can include if needed.
I have repeatedly seen the following error, can anyone help?
WARNING: CTestNormDispIncr::test() - failed to converge
after: 1000 iterations current Norm: 5.67061e-12 (max: 1e-12, Norm deltaR: 6.15978e-09)
NewtonRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 4.66
OpenSees > analyze failed, returned: -3 error flag
# ----------------------------------------------------
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# Do operations of Example3.1 by sourcing in the tcl file
source "/Applications/OpenSees3.3.0/bin/YModelbuild.tcl"
puts "Gravity load analysis completed"
# Set the gravity loads to be constant & reset the time in the domain
loadConst -time 0.0
# ----------------------------------------------------
# End of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
# ----------------------------------------------------
# Start of additional modelling for dynamic loads
# ----------------------------------------------------
# Define nodal mass in terms of axial load on columns
set g 386.4
set m [expr $P/$g]; # expr command to evaluate an expression
# tag MX MY RZ
mass 8 $m $m 0.0
mass 1 $m $m 0.0
# Define dynamic loads
# --------------------
# Set some parameters
set outFile tabas.g3
# Source in TCL proc to read PEER SMD record
source "/Applications/OpenSees3.3.0/bin/ReadSMDFile.tcl"
# Permform the conversion from SMD record to OpenSees record
# inFile outFile dt
ReadSMDFile "/Applications/OpenSees3.3.0/bin/tabas.txt" $outFile dt
# Set time series to be passed to uniform excitation
timeSeries Path 1 -filePath $outFile -dt $dt -factor $g
# Create UniformExcitation load pattern
# tag dir
pattern UniformExcitation 2 1 -accel $timeSeries
# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.000625
# ----------------------------------------------------
# End of additional modelling for dynamic loads
# ----------------------------------------------------
# ---------------------------------------------------------
# Start of modifications to analysis for transient analysis
# ---------------------------------------------------------
# Delete the old analysis and all it's component objects
wipeAnalysis
# Create the system of equation, a banded general storage scheme
system BandGeneral
# Create the constraint handler, a plain handler as homogeneous boundary
constraints Plain
# Create the convergence test, the norm of the residual with a tolerance of
# 1e-12 and a max number of iterations of 1000
test NormDispIncr 1.0e-12 1000
# Create the solution algorithm, a Newton-Raphson algorithm
algorithm Newton
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the integration scheme, the Newmark with alpha =0.5 and beta =.25
integrator Newmark 0.5 0.25
# Create the analysis object
analysis Transient
# ---------------------------------------------------------
# End of modifications to analysis for transient analysis
# ---------------------------------------------------------
# ------------------------------
# Start of recorder generation
# ------------------------------
# Create a recorder to monitor nodal displacements
recorder Node -time -file data/Y-earthquake-node.out -node 8 7 6 5 4 3 2 1 -dof 1 disp
# Record element forces
recorder Element -time -file data/Y-earthquake-ele1Force.out -ele 1 force
# Create recorders to monitor section forces and deformations
# at the base of the column
recorder Element -time -file data/Y-earthquake-ele1secForce.out -ele 1 section 1 force
recorder Element -time -file data/Y-earthquake-ele1secDef.out -ele 1 section 1 deformation
# --------------------------------
# End of recorder generation
# ---------------------------------
# ------------------------------
# Finally perform the analysis
# ------------------------------
# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 2]"
# set some variables
set tFinal [expr 2000 * $dt]
set tCurrent [getTime]
set ok 0
# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {
set ok [analyze 1 0.02]
# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-12 1000 0
algorithm ModifiedNewton -initial
set ok [analyze 1 0.02]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-12 1000
algorithm Newton
}
set tCurrent [getTime]
}
# Print a message to indicate if analysis succesfull or not
if {$ok == 0} {
puts "Transient analysis completed SUCCESSFULLY";
} else {
puts "Transient analysis completed FAILED";
}
# Perform an eigenvalue analysis
puts [eigen 2]
# Print state of node 8
print node 8
Convergence Errors - Uniform Excitation - can someone help?
Moderators: silvia, selimgunay, Moderators
Re: Convergence Errors - Uniform Excitation - can someone help?
It's probably converging, but your tolerance is too small (1e-12). Use printFlag = 1 on the convergence test to see if the solution is converging to something greater than 1e-12. You can increase the tolerance, then set printFlag = 0 so that yo don't see a lot of output.