Convergence Errors - Uniform Excitation - can someone help?

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

Moderators: silvia, selimgunay, Moderators

Post Reply
katekem
Posts: 1
Joined: Tue Jun 20, 2023 10:27 am

Convergence Errors - Uniform Excitation - can someone help?

Post by katekem » Wed Jun 21, 2023 5:42 am

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

mhscott
Posts: 875
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: Convergence Errors - Uniform Excitation - can someone help?

Post by mhscott » Wed Jun 21, 2023 9:33 am

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.

Post Reply