analysis time

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

analysis time

Post by sualim »

hi.

I made a 3D RC model (3 story, x dir - 36bay, y dir - 2bay) using lumped plasticity model

so, the ends of the all element have zerolength inputed the hysteretic loop (deformation - force)

some element's hysteretic loop are strength degradation loop

my problem is the pushover anlysis time is too long (it's almost 1day....)

I think the model was right because I checked the result file

how can I reduce the analysis time?

attached the script of analysis part


# Gravity-analysis: load-controlled static analysis
set Tol 10; # convergence tolerance for test
set constraintsTypeGravity Transformation;
constraints Transformation;
numberer RCM # renumber dofs to minimize band-width (optimization)
system SparseGeneral -piv # 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 Newtons solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1.0/$NstepGravity]; # 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
puts "Model Built"
# displacement parameters
set IDctrlNode 401001; # node where disp is read for disp control
set IDctrlDOF 1; # degree of freedom read for disp control (1 = x displacement)
set HBuilding 8100
set Dincr [expr 1]; # displacement increment
set Dmax [expr 3.000000e-02*$HBuilding]; # maximum displacement of pushover: 5 roof drift
set maxNumIter 20; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType NormDispIncr; # Convergence-test type
set algorithmType Newton



# analysis commands
constraints Transformation # how it handles boundary conditions
numberer RCM # renumber dofs to minimize band-width (optimization)
system SparseGeneral -piv # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol $maxNumIter 0; # tolerance, max iterations, printFlag
algorithm Newton # use Newtons solution algorithm: updates tangent stiffness at every iteration
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # use displacement-controlled analysis
analysis Static # define type of analysis: static for pushover
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 {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}; # end while loop
}; # end if ok !0
puts "Pushover analysis completed!!!"
}
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: analysis time

Post by fmk »

that is a small model and should not be taking anywhere near a day .. an Arpack solver may provide better performance but the solver is probably not the issue .. you could be page faulting on your computer or using some material that is really really expensive .. how are you modling the hinges?
sualim
Posts: 27
Joined: Tue Jul 29, 2014 9:37 pm
Location: yonsei university

Re: analysis time

Post by sualim »

dear fmk

I made the hinge using Hysteretic command and zerolength element

ex>
uniaxialMaterial Hysteretic 111051 58931336.843402 0.000160 176794010.530206 0.002000 17679401.053021 0.146429 -58931336.843402 -0.000160 -176794010.530206 -0.002000 -17679401.053021 -0.146429 1 1 0 0 0
uniaxialMaterial Hysteretic 121051 44570309.541669 0.000248 133710928.625008 0.002000 13371092.862501 0.224925 -44570309.541669 -0.000248 -133710928.625008 -0.002000 -13371092.862501 -0.224925 1 1 0 0 0

element zeroLength 101501 101101 101201 -mat 111051 121051 -dir 5 6
equalDOF 101101 101201 1 2 3 4


the analysis time took about 20 minutes.
but the rigidDiaphragm command did not used, the analysis time took about 1minutes

the analysis command was attached below

# Gravity-analysis: load-controlled static analysis
constraints Penalty 1.0e14 1.0e14 # how it handles boundary conditions
numberer RCM # renumber dofs to minimize band-width (optimization)
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 Newtons solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 10; # apply gravity in 10 steps
set DGravity [expr 1.0/$NstepGravity]; # 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
puts "Model Built"


# pushover analysis commands
constraints Penalty 1.0e14 1.0e14 # how it handles boundary conditions
numberer RCM # renumber dofs to minimize band-width (optimization)
system BandGeneral # how to store and solve the system of equations in the analysis (large model: try UmfPack)
test NormDispIncr $Tol $maxNumIter 0; # tolerance, max iterations, printFlag
algorithm Newton # use Newtons solution algorithm: updates tangent stiffness at every iteration
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr; # use displacement-controlled analysis
analysis Static # define type of analysis: static for pushover
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 {$ok != 0} {
# if analysis fails, we try some other stuff, performance is slower inside this loop
set ok 0;
set controlDisp 0.0;
set D0 0.0; # analysis starts from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}; # end while loop
}; # end if ok !0
puts "Pushover analysis completed!!!"
}
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: analysis time

Post by fmk »

so it is not a day but 20MINS! .. one issue maybe the size of the penalty constraints .. you could be having numerical issues .. try setting the penalty factors to something small and check the time .. enlarge only till big enough to get constraints near enough
Post Reply