Understanding Convergence Errors - FBE simple cantilevered column time history analysis

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Borislav
Posts: 4
Joined: Tue May 07, 2019 10:34 am

Understanding Convergence Errors - FBE simple cantilevered column time history analysis

Post by Borislav » Sun Nov 15, 2020 6:16 pm

Hello all,

I have modeled a simple reinforced concrete column that is subjected to a set of groundmotions, and had some questions. I chose to use forcebeamcolumn elements along with fiber sections using concrete07 and reinforcingsteel materials as you can see in my attached code.
Before I moved to dynamic analysis, I made sure to perform simpler static analyses and to check the column eigenvalues - all looks reasonable.

Issues arise when running multiple ground motions - I have a set of around 50 for my research and am trying to have as many records run successfully for a parametric study which has multiple other columns. The most common error I incur is the following:

WARNING - ForceBeamColumn2d::update - failed to get compatible element forces & deformations for element: 1(dW: << 1.29063e-12)
Domain::update - domain failed in update
Newmark::update() - failed to update the domain
WARNING NewtonRaphson::solveCurrentStep() -the Integrator failed in update()
DirectIntegrationAnalysis::analyze() - the Algorithm failed at time 27.97
OpenSees > analyze failed, returned: -3 error flag

Can someone explain to me what causes this issue, or provide more insight? I do not understand what the dW: << 1.29063e-12 part means and I figure I should also mention that some ground motions will run to completion on one column model but not another. I am unsure of how to address this.

As a side note, some analyses will output a fairly long sequence of numbers that converge to 1.0:
0.999915
0.999945
0.999967
0.999983
0.999995
0.999999
1
Can someone explain what this is and if I can suppress this message?
Lastly, my code is attached below for your reference. Appreciate it.

Code: Select all

wipe							
model basic -ndm 2 -ndf 3							

#Structural Parameters (N, mm, sec.)

set		nPc		5			
#Column Parameters							
set		Dcol	1500.00	; #mm			
set		Lcol	7500.00	; #mm			
set		Dcore	1400	; #mm			
set		Abar	1000	; #mm2			
set		Nbar	32		; #number of bar		
set		Cover	50.00	; #mm			
set		Mass	630				
set		Weight	-6185011				
#Concrete (confined)							
set 	fc		-40.203				
set 	ec		-0.00348657				
set 	Ec		31105.6563				
set 	ft		3.931162				
set 	et		0.000253				
set 	xp		2				
set 	xn		30				
set 	rc		1.589063				
#Concrete (unconfined)							
set 	fcu		-35.00				
set 	ecu		-0.002				
set 	Ecu		31105.6563				
set 	ftu		3.667969				
set 	etu		0.000236				
set 	xpu		2				
set 	xnu		2.3				
set 	rcu		4.830769				
#Steel 							
set 	fys		400				
set 	fus		600				
set 	Es		200000				
set 	Esh		6000				
set 	esh		0.01				
set 	eult	0.12					
set 	lsr		2.101				

#model Builder

wipe
model basic -ndm 2 -ndf 3

#Column Confined Concrete 
uniaxialMaterial 	Concrete07 			1	$fc		$ec		$Ec	 $ft  $et  $xp  $xn  $rc	
#Column Unconfined Concrete 
uniaxialMaterial 	Concrete07 			2	$fcu	$ecu	$Ecu $ftu $etu $xpu $xnu $rcu		
#Column Reinforcing Steel						
uniaxialMaterial 	ReinforcingSteel	3 	$fys 	$fus	$Es	$Esh $esh $eult	-GABuck $lsr 1	0.4 0.5 -CMFatigue 0.26	0.506	0.389


#Uniaxial Torsional Stiffness
uniaxialMaterial  	Elastic     		4	1e9;

# Type of geometric nonlinearity (1-linear, 2-Pdelta, 3-Corotational)
geomTransf Linear 1;
set ColTransf 1;

#node   ID	X		Y
node	1   0		0
node	2   0		$Lcol
set TopNode 2

#Node Fixities
#     nTag  X   Y   MZ
fix		1	1	1	1


#Element fiber sections
section Fiber 1 {
    #core concrete
                  patch circ 1  12   4  0.  0.   0.      			[expr $Dcore/2.]	0.	360.
	#cover concrete
                  patch circ 2  12   1  0.  0.   [expr $Dcore/2.]    [expr $Dcol/2.]	0.	360.
    #Reinf. Steel
                  layer circ 3  $Nbar $Abar  0.  0.    				[expr $Dcore/2.]
}
section Aggregator 2 4 T -section 1;

#Define Elements
#                        tag ndI ndJ nPts   secID   transf
element forceBeamColumn   1   1   2  5   	2	    $ColTransf

#Define Masses
#       node 		Mx 		My 		Mz
mass	$TopNode	$Mass	1e-9	1e-9

# Gravity
pattern Plain 100	Linear   {	
#Axial Load on Column
load	$TopNode	0	$Weight	0
	}	
	
#Apply gravity in 10 steps and freeze loading
constraints Plain
numberer Plain
system BandGeneral
test NormDispIncr 1.0e-8 10
algorithm Newton
integrator LoadControl 0.1
analysis Static
analyze 10
loadConst -time 0.0

# Apply Rayleigh Damping
set ww [eigen 2]
set wi [expr sqrt([lindex $ww 0])]
set wj [expr sqrt([lindex $ww 1])]
set xi 0.05; #damping coefficient in first 2 modes
set alpha [expr $xi*(2.0*$wi*$wj)/($wi+$wj)]
set beta  [expr $xi*(2.0)/($wi+$wj)]
rayleigh $alpha 0.0 $beta 0.0

#recorders for Time History analysis
recorder Node 		-file NLTHA_Force.txt  	  -time -node 1 -dof  1  reaction
recorder Node 		-file NLTHA_Disp.txt  	  -time -node $TopNode -dof  1  disp

# Define earthquake record
set dnt 0.0200; 	
set step 17003
set scale [expr 9810]
set Out_ID "2475_GM_10.acc"

timeSeries Path 300 -dt $dnt -filePath Groundmotions/$Out_ID -factor $scale

#                        tag  dir -accel TimeHistory
pattern UniformExcitation  2    1  -accel      300
wipeAnalysis

# Create a new analysis type
constraints Plain
numberer Plain
system FullGeneral
test NormDispIncr 1.0e-6  500 0
algorithm Newton
integrator Newmark 0.5 0.25
analysis Transient
set ok [analyze $step $dnt]

if {$ok != 0} { 
	# Additional attempts to reach convergence if an error occurs
	set ok 0;
	set controlTime [getTime];
	while {$controlTime < [expr $step*$dnt] && $ok == 0} {
		set ok [analyze 1 $dnt]
		set controlTime [getTime]
		set ok [analyze 1 $dnt]
		
		if {$ok != 0} {
			algorithm NewtonLineSearch
			set ok [analyze 1 $dnt]
			test EnergyIncr  1e-5  1000 0
			algorithm Newton
		}
		if {$ok != 0} {
			algorithm Broyden 8
			set ok [analyze 1 $dnt]
			algorithm Newton
		}
		if {$ok != 0} {
			algorithm KrylovNewton
			set ok [analyze 1 $dnt]
			algorithm Newton
		}
	}
}
Thanks for your time
- Boris

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: Understanding Convergence Errors - FBE simple cantilevered column time history analysis

Post by selimgunay » Mon Nov 16, 2020 11:36 pm

There is a convergence check that is required by the integration method. Furthermore, the forcebased beamcolumn element has an internal convergence requirement.

You can play with the tolerances and maximum iterations of the forcebased beamcolumn element or try adaptive strategies at the numerical integration level

https://opensees.berkeley.edu/wiki/inde ... mn_Element

Borislav
Posts: 4
Joined: Tue May 07, 2019 10:34 am

Re: Understanding Convergence Errors - FBE simple cantilevered column time history analysis

Post by Borislav » Tue Nov 17, 2020 8:34 am

Thanks selimgunay for your insight. I wanted to ask - is it common practice to include an adaptive integration strategy for time history analyses?

I am unsure whether there is a *perfect* set of algorithm, test, tolerances, etc which will run and produce results from the first try or if convergence errors were caused by something I've missed in my model.

Post Reply