Number of Integration Points

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Beyhan BAYHAN
Posts: 4
Joined: Thu Oct 12, 2006 11:12 am
Location: Mersin University

Number of Integration Points

Post by Beyhan BAYHAN »

I read your previous messages about the number of integration points that 4-5 integration points is the optimum place to start. However, I did many nonlinear-static and dynamic analyses for a "nonlinear beam column" element (a cantilever column) with integration points 3,4,5....10, but I could not obtain consistent results. Moreover, I compared the pushover curves and top disp.-time results (nonlinear time history analysis) with those of other structural analysis programs; RAM Perform 3D and Seismostruct. I concluded that the model with 9 integration points gave the best results among them.

My first question is; Are 3 integration points enough or not in a cantilever column for sufficient accuracy?

The second one is; when actual deformation shape of general frame element is considered, are 5 integration points enough or not? If the answers are yes, why did I obtain the best results only with 9 integration points?

I would be pleased if you check the codes that I attach in this message.

Best Regards,

Beyhan BAYHAN

GRAVITYANALYSIS.tcl

Code: Select all

#CANTILEVER - FIBER MODEL - GRAVITY ANALYSIS
#units are N, mm

model basic -ndm 2 -ndf 3

set height 3000

#Create Nodes 
node 1	0.0	0.0
node 2	0.0	$height

#Fix supports at base of columns
fix 1 1 1 1 

#Define materials for nonlinear columns
# ------------------------------------------
# CONCRETE                  tag   f'c        ec0   		f'cu        ecu
# Core concrete (confined)
uniaxialMaterial Concrete01  1    -30.0     -0.002 		-25.5		-0.012	

# STEEL
# Reinforcing steel 
set fy 420
set E 200000
#                        tag   fy   E0    b
uniaxialMaterial Steel01  3   $fy   $E    0.004

#Define cross-section for nonlinear columns

set colwidth 600
set coldepth 600
set cover    25
set As	 452.39 

set y1 [ expr $coldepth/2.0]
set z1 [ expr $colwidth/2.0]

section Fiber 1 { 

#Cretae the concrete core fibers
patch quad 1 40 40 [expr $y1] [expr $z1] [expr -$y1] [expr $z1] [expr -$y1] [expr -$z1] [expr $y1] [expr -$z1]

# Create the reinforcing fibers (left, middle, right)
layer straight 3 3 $As [expr $y1-$cover] [expr $z1-$cover] [expr $y1-$cover] [expr $cover-$z1]
layer straight 3 2 $As 0.0 [expr $z1-$cover] 0.0 [expr $cover-$z1]
layer straight 3 3 $As [expr $cover-$y1] [expr $z1-$cover] [expr $cover-$y1] [expr $cover-$z1]
}
#Define column elements
#Geometry of column elements
geomTransf Linear 1
#Number of integration points along length of element
#set np [expr $intpointno]
set np $intpointno
#Create the columns using Beam-column elements
element nonlinearBeamColumn 1 1 2 $np 1 1 -iter 200 1.0e-6

#Define gravity Loads
set P 1000
#Create a Plain load Pattern with a linear time series
pattern Plain 1 Linear {
	load 2 0.0 [expr -$P] 0.0        
}
#End of Model Generation

#Start of analysis generation
system BandGeneral
constraints Transformation
numberer RCM
test NormDispIncr 1.0e-12 10 3
algorithm Newton
integrator LoadControl 0.1 1 0.1 0.1
analysis Static
initialize
analyze 10
print 2
PUSHOVERANALYSIS.tcl

Code: Select all

#CANTILEVER - PUSHOVER ANALYSIS
#Units: N, mm, sec

set intpointno_list  "2 3 4 5 6 7 8 9 10"
foreach intpointno $intpointno_list {
set prefilename $intpointno
puts "$intpointno"

source GRAVITYANALYSIS.tcl
puts "GRAVITY LOAD ANALYSIS HAS BEEN COMPLETED"
loadConst -time 0.0

#Set Lateral Load
set H 1000
pattern Plain 2 "Linear" {
load 2 $H 0.0 0.0
}
#set displacement increment
set dU 0.1
integrator DisplacementControl 2 1 $dU 1 $dU $dU
recorder Node -file $prefilename.node2po.out  -time -node 2  -dof 1 disp 
set maxU 150
set numSteps [expr int($maxU/$dU)]

# Perform the analysis
set ok [analyze $numSteps]

if {$ok != 0} {

    set currentDisp [nodeDisp 2 1]
    set ok 0
    while {$ok == 0 && $currentDisp < $maxU} {

	set ok [analyze 1]

	# 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]
	    if {$ok == 0} {puts "that worked .. back to regular newton"}
	    test NormDispIncr 1.0e-12  10 
	    algorithm Newton
	}

	set currentDisp [nodeDisp 2 1]
    }
}

puts "";
if {$ok == 0} {
   puts "Pushover analysis completed SUCCESSFULLY";
} else {
   puts "Pushover analysis FAILED";    
}

# Print the state at node 3
print node 2
wipe 
}
DYNAMICANALYSIS.tcl

Code: Select all

#CANTILEVER - DYNAMIC ANALYSIS
# Units: N, mm, sec
# ----------------------------------------------------
# Start of Model Generation & Initial Gravity Analysis
# ----------------------------------------------------
set intpointno_list  "2 3 4 5 6 7 8 9 10"
foreach intpointno $intpointno_list {
set prefilename $intpointno
puts "$intpointno"

# Do operations of Example3.1 by sourcing in the tcl file
source GRAVITYANALYSIS.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 9814
set m 203.8;       # expr command to evaluate an expression

#    tag   MX   MY   RZ
mass   2    $m   $m    0

# Define dynamic loads.
# --------------------

# Set some parameters
set outFile ARL360.g3

# Source in TCL proc to read PEER SMD record
source ReadSMDFile.tcl 

# Permform the conversion from SMD record to OpenSees record
#              inFile     outFile dt
ReadSMDFile ARL360.at2 $outFile dt

# Set time series to be passed to uniform excitation
set accelSeries "Path -filePath $outFile -dt $dt -factor $g"

# Create UniformExcitation load pattern
#                         tag dir 
pattern UniformExcitation  2   1  -accel $accelSeries

# set the rayleigh damping factors for nodes & elements
rayleigh 0.0 0.0 0.0 0.0

# ----------------------------------------------------
# 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 10
test NormDispIncr 1.0e-6  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 $prefilename.node2ARL360.out -node 2  -dof 1 disp

# --------------------------------
# End of recorder generation
# ---------------------------------


# ------------------------------
# Finally perform the analysis
# ------------------------------

# Perform an eigenvalue analysis
puts "eigen values at start of transient: [eigen 1]"


# set some variables
set tFinal [expr 2000 * 0.02]
set tCurrent [getTime]
set ok 0

# Perform the transient analysis
while {$ok == 0 && $tCurrent < $tFinal} {
    
    set ok [analyze 1 .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-6  1000 0
	algorithm ModifiedNewton -initial
	set ok [analyze 1 .01]
	if {$ok == 0} {puts "that worked .. back to regular newton"}
	test NormDispIncr 1.0e-6  2000 
	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 values at start of transient: [eigen 1]"

# Print state of node 3
print node 2

wipe

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

Post by fmk »

First off you should be using Concrete02 for the concrete and possibly Hysteretic for the steel, depending on the strains recorded. Talk to silvia about this.

Looking at the other programs to determine how many integration points to use is pointless,
the element formulation for the OpenSees nonlinearBeamColumn is forced based, the others are disp based. If you just want to compare with these other models you might want to use the dispBeamColumn element and an apropriate concerte or steel material based on the other programs. Of course, what you really want to do is compare the bunch against some actual experimental tests. Based on our experience with students comparing results versus what has been measured on the shake tables at Berkeley, 4 or 5 are o.k, as tend to match the plastic hinge length.

As for the number of integration points. When you have a degrading system, such as your RC column, and you push it the results obtained will not converge to a solution just because you add more integration points. What you are actually doing is playing with the plastic hinge length. So you might also want to look at the BeamWithHinges element.

Here is a paper you should also look at and understand.
Scott, M.H. and G.L. Fenves, "Plastic Hinge Integration Methods for Force-Based Beam-Column Elements," Journal of Structural Engineering, February 2006, Vol. 132, pp. 244-252.
pejman_opensees
Posts: 123
Joined: Tue Oct 31, 2006 10:40 am
Location: k.n.toosi University

another reference

Post by pejman_opensees »

As a good reference I suggest the work done by spacone fillippou and taucer about fiber beam column element(EERC report 91/17).
I hope it will work!
Pejman
saeedeh
Posts: 9
Joined: Mon Mar 30, 2015 1:58 am

Number of Integration Points

Post by saeedeh »

hi
i have a simple model of a beam with nonlinearBeamColumn element under cyclic load, when i use any number of integration point it doesn't converge but when i use just 2 integration point it converges, is it ok to use 2 integration point instead of recommended numbers like 4 and 5? dose it change the accuracy of the answer? if yes, how can i converge the model? i used convergence loop too.
thank you
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Number of Integration Points

Post by fmk »

probably not. the problem could be anything: the loading steps or step sizer are too big, or section too weak or improperly defined. look at your section and material definitions or revise the analysis script to do smaller steps.
saeedeh
Posts: 9
Joined: Mon Mar 30, 2015 1:58 am

Re: Number of Integration Points

Post by saeedeh »

thanks for answering, but when i use BeamWithHing element it converges, doesn't that mean loads and section and materials are ok? what do you mean by "weak section" ?
i have an other problem too, when i use one dispBeamColumn element it converges but as we know in DBE we should use more than one elements, but when i increase number of elements it can not converges again, what should i do?
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Number of Integration Points

Post by fmk »

if you want to get the model to converge it sounds like you have to improve the performance of the section to get past that point .. an alternative is to remove the offending element when it does fail .. probably the sections are toast anyway.

the latter problem is what we have seen in the psat when the forceBeamColumn fails and the user tries many displacement based elements.. the convergence problem rears it's head again but at the global level. at that level they can try and do stuff with the script.
saeedeh
Posts: 9
Joined: Mon Mar 30, 2015 1:58 am

Re: Number of Integration Points

Post by saeedeh »

thank you
excuse me, by the expression "section toast" you mean it has effect?
what do you mean "do stuff with script" ?
at last i can change parameters and get convergence, but calibration with experimental data is an other problem:( the experimental hysteresis curve have pinching, but the model hysteresis dont behave the same way, how i should add pinching when i use Conceret01WithSITC and Steel02?
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Number of Integration Points

Post by fmk »

section toast, i mean no moment-axial load carrying capacity left and/or possibly zero or negative tangent

look at the analysis part of this script:
http://opensees.berkeley.edu/wiki/index ... e_Analysis
Post Reply