spring model

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

Moderators: silvia, selimgunay, Moderators

Post Reply
sualim
Posts: 27
Joined: Tue Jul 29, 2014 9:37 pm
Location: yonsei university

spring model

Post by sualim »

Hi, I built up 3D rc model (x dir : 36bays, y dir : 2bays, 3 stories)

and hysteretic loop was introduced the end of columns and beams (lumped plasticity model)

the analysis method is nonlinear static analysis (pushover to x dir)

I used the rigidDiaphrame commend ( I read the ex7_3story,3bayX,3bayZ files)

my question is what's mean "variable constraintsTypeGravity Lagrange; # large model: try Transformation"

and my tcl's analysis time was too long ( Tol is 1.0e-1, and total step of pushover is 81)

will I change the analysis term??

my analysis tcl is below

this tcl is not good for lumped plasticity model???

I input 3 points in hysteretic loop ( [force1, deformation 1], [force2, deformation 2], [force3, deformation 3] , force 1 < force2 < force 3)

but I want to input 4 point(force1 < force 2 < force3 > force4)

so, I tried using parallel command (hysteretic material 1 & hysteretic material 2)

but the output was so strange

pinching4 command' parameters are not correct to me ( I knowed only 4 points)

could you explain to me fundamentals of parallel command?

or tell me making the 4 point hysteretic loop

plz help me...
----------------------------------------------------------------------------------------------------------------------------------------
# gravity analyzer
set RigidDiaphragm ON ;

# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-1; # convergence tolerance for test
variable constraintsTypeGravity Plain; # default;
if { [info exists RigidDiaphragm] == 1} {
if {$RigidDiaphragm=="ON"} {
variable constraintsTypeGravity Lagrange; # large model: try Transformation
}; # if rigid diaphragm is on
}; # if rigid diaphragm exists
constraints $constraintsTypeGravity ; # how it handles boundary conditions
numberer RCM; # renumber dof's to minimize band-width (optimization), if you want to
system BandGeneral ; # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol 6 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity


# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0
set Tol 1.0e-1; # reduce tolerance after gravity loads
puts "Model Built"

----------------------------------------------------------------------------------------------------------------------------------------------------
# pushover analyzer
set IDctrlNode 402001
set IDctrlDOF 1

set Jd 4

# characteristics of pushover analysis
set totalHeight 8.1
set Dmax [expr $totalHeight*0.05]
set Dincr 0.1; # displacement increment. you want this to be small, but not too small to slow analysis

pattern Plain 3 Linear {
load 2000 0.0556 0 0 0 0 0
load 3000 0.1111 0 0 0 0 0
load 4000 0.1667 0 0 0 0 0
}

# --------------------------------- perform Static Pushover Analysis
# ----------- set up analysis parameters
source LibAnalysisStaticParameters.tcl; # constraintsHandler,DOFnumberer,system-ofequations,convergenceTest,solutionAlgorithm,integrator
set fmt1 "%s Pushover analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM analysis
# ----------------------------------------------first analyze command------------------------
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered
# ----------------------------------------------if convergence failure-------------------------
if {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set Dstep 0.0;
set ok 0
while {$Dstep <= 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr $controlDisp/$Dmax]
set ok [analyze 1]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {; # reduce step size if still fails to converge
set Nk 4; # reduce step size
set DincrReduced [expr $Dincr/$Nk];
integrator DisplacementControl $IDctrlNode $IDctrlDOF $DincrReduced
for {set ik 1} {$ik <=$Nk} {incr ik 1} {
set ok [analyze 1]; # this will return zero if no convergence problems were encountered
if {$ok != 0} {
# if analysis fails, we try some other stuff
# performance is slower inside this loop global maxNumIterStatic; # max no. of iterations performed before "failure to converge" is ret'd
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 20 0
algorithm Newton -initial
set ok [analyze 1]
test $testTypeStatic $TolStatic $maxNumIterStatic 0
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm $algorithmTypeStatic
}
if {$ok != 0} {; # stop if still fails to converge
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
return -1
}; # end if
}; # end for
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # bring back to original increment
}; # end if
}; # end while loop
}; # end if ok !0
# -----------------------------------------------------------------------------------------------------

if {$ok != 0 } {
puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: spring model

Post by fmk »

Silvia made all her examples way more complicated than needed. the use of variable is not needed for your example .. just replace the line
constraints $constraintsTypeGravity
with
constraints Transformation

OpenSees works fine for lumped plasticity .. assuming your model is correct!

if it is taking too long TRY A DIFFERENT SOLVER to start with, e.g. Umfpack


look at the mutilinear model

i suggest before playing with materials in a large model, you play with them first in a 1 dof model playing with different strain histories and looking at stress and tangent outputs .. just throwing them into the larger model and not knowing what they are going to do is just a WASTE OF YOUR TIME.
Post Reply