Large number of sp constraints - Convergence
Moderators: silvia, selimgunay, Moderators
Large number of sp constraints - Convergence
Hello,
I am working with a large nonlinear RC building model (about 1500 nodes). OpenSees is performing a stiffness evaluation of a portion of the structure my moving each degree of freedom individually by small amounts.
To do this, at each time step I am defining a Plain pattern which contains a large number of single point constraints (roughly 2800 sp constraints). The amount of movement during each step in very small. However, after several successful steps (anywhere from 5-50), the system loses convergence.
I have previously run large, demanding dynamic analyses on this structural model without convergence issues. Is there an inherent issue with defining a large number of constraints to a large model? Are there certain analysis parameters (constraints handlers, algorithms, etc.) which should be avoided when using many sp constraints?
Thank you for the help,
Justin
I am working with a large nonlinear RC building model (about 1500 nodes). OpenSees is performing a stiffness evaluation of a portion of the structure my moving each degree of freedom individually by small amounts.
To do this, at each time step I am defining a Plain pattern which contains a large number of single point constraints (roughly 2800 sp constraints). The amount of movement during each step in very small. However, after several successful steps (anywhere from 5-50), the system loses convergence.
I have previously run large, demanding dynamic analyses on this structural model without convergence issues. Is there an inherent issue with defining a large number of constraints to a large model? Are there certain analysis parameters (constraints handlers, algorithms, etc.) which should be avoided when using many sp constraints?
Thank you for the help,
Justin
Re: Large number of sp constraints - Convergence
you might try the penalty method. the transformation method simply sets the displacements at the nodes at the start of the time step and lets the structure recover. the penalty method tries to enforce the movement over the course of the analysis step, as such it can be less stressfull (for want of a better word) on the structure.
Re: Large number of sp constraints - Convergence
Thanks for the reply Frank.
I'm trying everything in my arsenal to achieve convergence on this building model. One thing that is giving me trouble is not being able to apply a set of sp constraints in small increments (for instance, apply the pattern of sp constraints 1/10 at a time, in 10 steps).
It seems if I define "LoadControl 0.1" and "set ok [analyze 10]", the program does not apply these sp constraints in the manner I would expect, and loses convergence after the first step.
If I skip the first step, there is no issue converging at 2/10 of the displacement, so I believe it could be an issue with trying to analyze sp constraints multiple times.
Is this a known issue, and do you know of any simple workarounds?
Thanks again for the help.
Justin
I'm trying everything in my arsenal to achieve convergence on this building model. One thing that is giving me trouble is not being able to apply a set of sp constraints in small increments (for instance, apply the pattern of sp constraints 1/10 at a time, in 10 steps).
It seems if I define "LoadControl 0.1" and "set ok [analyze 10]", the program does not apply these sp constraints in the manner I would expect, and loses convergence after the first step.
If I skip the first step, there is no issue converging at 2/10 of the displacement, so I believe it could be an issue with trying to analyze sp constraints multiple times.
Is this a known issue, and do you know of any simple workarounds?
Thanks again for the help.
Justin
Re: Large number of sp constraints - Convergence
you might have something else going on at that first step, i.e. gravity loads or something. the sp constraints work just fine. here is a simple example to demonstrate. it shows multiple sp constraints and using different step sizes.
foreach {delta numSteps} {1 1 .1 10 .01 100} {
wipe
model Basic -ndm 1 -ndf 1
node 1 0.0
node 2 1.0
node 3 2.0
node 4 3.0
fix 1 1
uniaxialMaterial Elastic 1 100.
element Truss 1 1 2 1.0 1
element Truss 2 2 3 1.0 1
element Truss 3 3 4 1.0 1
timeSeries Linear 1
pattern Plain 1 1 {
sp 3 1 1.0
sp 4 1 1.5
}
integrator LoadControl $delta
constraints Penalty 1e6 1e6
algorithm Linear
numberer Plain
system ProfileSPD
analysis Static
set node3 {}
set node4 {}
for {set i 1} {$i <= $numSteps} {incr i 1} {
analyze 1
lappend node3 [lindex [nodeDisp 3 1] 0]
lappend node4 [lindex [nodeDisp 4 1] 0]
}
puts "node3: $node3"
puts "node4: $node4"
}
foreach {delta numSteps} {1 1 .1 10 .01 100} {
wipe
model Basic -ndm 1 -ndf 1
node 1 0.0
node 2 1.0
node 3 2.0
node 4 3.0
fix 1 1
uniaxialMaterial Elastic 1 100.
element Truss 1 1 2 1.0 1
element Truss 2 2 3 1.0 1
element Truss 3 3 4 1.0 1
timeSeries Linear 1
pattern Plain 1 1 {
sp 3 1 1.0
sp 4 1 1.5
}
integrator LoadControl $delta
constraints Penalty 1e6 1e6
algorithm Linear
numberer Plain
system ProfileSPD
analysis Static
set node3 {}
set node4 {}
for {set i 1} {$i <= $numSteps} {incr i 1} {
analyze 1
lappend node3 [lindex [nodeDisp 3 1] 0]
lappend node4 [lindex [nodeDisp 4 1] 0]
}
puts "node3: $node3"
puts "node4: $node4"
}
Re: Large number of sp constraints - Convergence
Hi Frank,
I decided to attempt a static explicit integration method using "algorithm Linear" and small load steps to apply these sp constraints. When steps are taken which are too large, the model obviously blows out eventually when using the nonlinear building model.
I would like to implement a procedure where I can revert back to a stable model state and switch to smaller load steps whenever the model blows out. I am attempting to use the "save" and "restore" commands to do this. I understand that certain element types and materials will not work with save and restore. I am only using forceBeamColumn elements elasticBeamColumn elements, as well as Concrete01, Steel01, and Elastic uniaxialMaterials. Are there any known conflicts with these elements/materials?
I get the following error when trying to save the modelstate:
ForceBeamColumn3d::sendSelf() - failed to send beamIntegr
Domain::send - element with tag 10010 failed in sendSelf FE_Datastore::commitState - domain failed to sendSelf
WARNING - database failed to commitState
Do the sections defined for my forceBeamColumns have an effect on the success of the "save" command? I am also using "UserDefined" element integration schemes in some elements, if that helps.
The error occurs when I execute the following lines:
database File ModelSaves
save 1
Does the "name" of the database matter? I could not find any examples using this command, so I am flying blind here.
Thanks,
Justin
I decided to attempt a static explicit integration method using "algorithm Linear" and small load steps to apply these sp constraints. When steps are taken which are too large, the model obviously blows out eventually when using the nonlinear building model.
I would like to implement a procedure where I can revert back to a stable model state and switch to smaller load steps whenever the model blows out. I am attempting to use the "save" and "restore" commands to do this. I understand that certain element types and materials will not work with save and restore. I am only using forceBeamColumn elements elasticBeamColumn elements, as well as Concrete01, Steel01, and Elastic uniaxialMaterials. Are there any known conflicts with these elements/materials?
I get the following error when trying to save the modelstate:
ForceBeamColumn3d::sendSelf() - failed to send beamIntegr
Domain::send - element with tag 10010 failed in sendSelf FE_Datastore::commitState - domain failed to sendSelf
WARNING - database failed to commitState
Do the sections defined for my forceBeamColumns have an effect on the success of the "save" command? I am also using "UserDefined" element integration schemes in some elements, if that helps.
The error occurs when I execute the following lines:
database File ModelSaves
save 1
Does the "name" of the database matter? I could not find any examples using this command, so I am flying blind here.
Thanks,
Justin
Re: Large number of sp constraints - Convergence
it's probably he integration scheme. can you provide a 2 node example with the materials , sections and the element command and i will fix it.
Re: Large number of sp constraints - Convergence
Frank, below is a 2-node cantilever system using the same properties as my full model. It produces the same error as the full model.
# Inelastic RC Frame Example
# Units: kN and m
#
# NOTE: to RUN this example, run Opensees and
# type the command: source Frame_2nodeexample.tcl
# Define the model builder
model BasicBuilder -ndm 3 -ndf 6
# Define nodes
# X Y Z
node [expr 10107] [expr -(18.3)] [expr -5.82] [expr 3.9]
node [expr 10110] [expr -(18.3)] [expr -4.57] [expr 3.9]
puts "Nodes Defined"
# Set base constraints
# DX DY DZ RX RY RZ
fix 10107 1 1 1 1 1 1
# Concrete Column and Beam Section Properties 11/27/11
set fc [expr 5.0*6894.76]
set fyl [expr 70.0*6894.76]
set Es [expr 29000.0*6894.76]
# Elastic modulus of concrete
set E [expr 4700*1000*pow($fc/1000.0,.5)]
# Torsional stiffness
set G [expr $E/2.5]
# Beam Cover
# utag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 1 [expr -$fc] -0.0022 [expr -0.2*$fc] -0.007
# Beam Core
# utag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 2 [expr -$fc] -0.0022 [expr -0.2*$fc] -0.010
# Steel model
# tag fy E b
uniaxialMaterial Steel01 3 [expr $fyl] [expr $Es] 0.02
# 1st floor transverse spandrel beam (exterior end)
section fiberSec [expr 161] {
# mat nfY nfZ yI zI yJ zJ
patch rect 2 20 20 [expr -0.41/2.0+0.051] [expr -0.71/2.0+0.051] [expr 0.41/2.0-0.051] [expr 0.71/2.0-0.051]
patch rect 1 5 20 [expr -0.41/2.0 ] [expr -0.71/2.0+0.051] [expr -0.41/2.0+0.051] [expr 0.71/2.0-0.051]
patch rect 1 5 20 [expr 0.41/2.0-0.051] [expr -0.71/2.0+0.051] [expr 0.41/2.0 ] [expr 0.71/2.0-0.051]
patch rect 1 5 5 [expr -0.41/2.0 ] [expr -0.71/2.0 ] [expr 0.41/2.0 ] [expr -0.71/2.0+0.051]
patch rect 1 5 5 [expr -0.41/2.0 ] [expr 0.71/2.0-0.051] [expr 0.41/2.0 ] [expr 0.71/2.0 ]
patch rect 1 5 5 [expr -0.61/2.0 ] [expr 0.71/2.0-0.1 ] [expr 0.61/2.0 ] [expr 0.71/2.0 ]
# mat nBars area yI zI yF zF
layer straight 3 5 [expr 6.452E-4*0.800] [expr -0.41/2.0+0.051+0.0287/2.0] [expr 0.71/2.0-0.051-0.0287/2.0] [expr 0.41/2.0-0.051-0.0287/2.0] [expr 0.71/2.0-0.051-0.0287/2.0]
layer straight 3 5 [expr 6.452E-4*0.800*0.75] [expr -0.41/2.0+0.051+0.0287/2.0] [expr -0.71/2.0+0.051+0.0287/2.0] [expr 0.41/2.0-0.051-0.0287/2.0] [expr -0.71/2.0+0.051+0.0287/2.0]
layer straight 3 5 [expr 9.3133E-5*0.61/2.0] [expr -0.61/2.0 ] [expr 0.71/2.0-0.1/2.0 ] [expr 0.61/2.0 ] [expr 0.71/2.0-0.1/2.0 ]
}
# Geometric transformation
# tag vecxz JntOffset
geomTransf Linear 21 0.0 0.0 1.0
# Make a rigid elastic material
uniaxialMaterial Elastic 999 9.9e9
# Add torsional stiffness
uniaxialMaterial Elastic 12 1.1235E5
# Created Aggregator Section with Torsion and Fiber Section
section Aggregator 1619 12 T -section 161
# Number of column integration points (sections) Changed to 3 on 12/7/11
set npbeam 3
# Beam weights for left and right beam ends (transverse)
set tbeaml1endweight1 [expr 0.371]
set tbeamlmidweight [expr 0.667]
set tbeamlendweight2 [expr 0.167]
# Beam int-point locations and weights
set beamlocs "0.0 0.5 1.0 "
set tbeaml1weights "$tbeaml1endweight1 $tbeamlmidweight $tbeamlendweight2 "
#TRANSVERSE BEAMS ID nI nJ geom type np [ sections ] [ intlocs ] [ intweights ]
element forceBeamColumn [expr 10010] [expr 10107] [expr 10110] 21 UserDefined $npbeam 1619 1619 1619 0.0 0.5 1.0 0.371 0.667 0.167
puts "Elements Modelled"
pattern Plain [expr 1] Linear {
# sp 10107 1 [expr 1.98402000000000e-05 ]
# sp 10107 2 [expr 0.0518265000000000 ]
# sp 10107 3 [expr 0.00472280000000000 ]
sp 10110 1 [expr -0.000550924000000000 ]
sp 10110 2 [expr 0.0528595000000000 ]
sp 10110 3 [expr -0.00929054000000000 ]
}
# Initialize Analysis Parameters
system SparseGeneral
constraints Penalty 1E20 1E20
numberer Plain
# Linear algorithm creates explicit solution strategy
algorithm Linear
set delta 0.02
integrator LoadControl [expr $delta]
analysis Static
# Analyze one step
set ok [analyze 5]
if {$ok != 0} {
puts "Analysis FAILED"
} else {
puts "Analysis completed SUCCESSFULLY"
}
database File ModelSaves
save 1
# Inelastic RC Frame Example
# Units: kN and m
#
# NOTE: to RUN this example, run Opensees and
# type the command: source Frame_2nodeexample.tcl
# Define the model builder
model BasicBuilder -ndm 3 -ndf 6
# Define nodes
# X Y Z
node [expr 10107] [expr -(18.3)] [expr -5.82] [expr 3.9]
node [expr 10110] [expr -(18.3)] [expr -4.57] [expr 3.9]
puts "Nodes Defined"
# Set base constraints
# DX DY DZ RX RY RZ
fix 10107 1 1 1 1 1 1
# Concrete Column and Beam Section Properties 11/27/11
set fc [expr 5.0*6894.76]
set fyl [expr 70.0*6894.76]
set Es [expr 29000.0*6894.76]
# Elastic modulus of concrete
set E [expr 4700*1000*pow($fc/1000.0,.5)]
# Torsional stiffness
set G [expr $E/2.5]
# Beam Cover
# utag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 1 [expr -$fc] -0.0022 [expr -0.2*$fc] -0.007
# Beam Core
# utag -f'c -epsco -f'cu -epscu
uniaxialMaterial Concrete01 2 [expr -$fc] -0.0022 [expr -0.2*$fc] -0.010
# Steel model
# tag fy E b
uniaxialMaterial Steel01 3 [expr $fyl] [expr $Es] 0.02
# 1st floor transverse spandrel beam (exterior end)
section fiberSec [expr 161] {
# mat nfY nfZ yI zI yJ zJ
patch rect 2 20 20 [expr -0.41/2.0+0.051] [expr -0.71/2.0+0.051] [expr 0.41/2.0-0.051] [expr 0.71/2.0-0.051]
patch rect 1 5 20 [expr -0.41/2.0 ] [expr -0.71/2.0+0.051] [expr -0.41/2.0+0.051] [expr 0.71/2.0-0.051]
patch rect 1 5 20 [expr 0.41/2.0-0.051] [expr -0.71/2.0+0.051] [expr 0.41/2.0 ] [expr 0.71/2.0-0.051]
patch rect 1 5 5 [expr -0.41/2.0 ] [expr -0.71/2.0 ] [expr 0.41/2.0 ] [expr -0.71/2.0+0.051]
patch rect 1 5 5 [expr -0.41/2.0 ] [expr 0.71/2.0-0.051] [expr 0.41/2.0 ] [expr 0.71/2.0 ]
patch rect 1 5 5 [expr -0.61/2.0 ] [expr 0.71/2.0-0.1 ] [expr 0.61/2.0 ] [expr 0.71/2.0 ]
# mat nBars area yI zI yF zF
layer straight 3 5 [expr 6.452E-4*0.800] [expr -0.41/2.0+0.051+0.0287/2.0] [expr 0.71/2.0-0.051-0.0287/2.0] [expr 0.41/2.0-0.051-0.0287/2.0] [expr 0.71/2.0-0.051-0.0287/2.0]
layer straight 3 5 [expr 6.452E-4*0.800*0.75] [expr -0.41/2.0+0.051+0.0287/2.0] [expr -0.71/2.0+0.051+0.0287/2.0] [expr 0.41/2.0-0.051-0.0287/2.0] [expr -0.71/2.0+0.051+0.0287/2.0]
layer straight 3 5 [expr 9.3133E-5*0.61/2.0] [expr -0.61/2.0 ] [expr 0.71/2.0-0.1/2.0 ] [expr 0.61/2.0 ] [expr 0.71/2.0-0.1/2.0 ]
}
# Geometric transformation
# tag vecxz JntOffset
geomTransf Linear 21 0.0 0.0 1.0
# Make a rigid elastic material
uniaxialMaterial Elastic 999 9.9e9
# Add torsional stiffness
uniaxialMaterial Elastic 12 1.1235E5
# Created Aggregator Section with Torsion and Fiber Section
section Aggregator 1619 12 T -section 161
# Number of column integration points (sections) Changed to 3 on 12/7/11
set npbeam 3
# Beam weights for left and right beam ends (transverse)
set tbeaml1endweight1 [expr 0.371]
set tbeamlmidweight [expr 0.667]
set tbeamlendweight2 [expr 0.167]
# Beam int-point locations and weights
set beamlocs "0.0 0.5 1.0 "
set tbeaml1weights "$tbeaml1endweight1 $tbeamlmidweight $tbeamlendweight2 "
#TRANSVERSE BEAMS ID nI nJ geom type np [ sections ] [ intlocs ] [ intweights ]
element forceBeamColumn [expr 10010] [expr 10107] [expr 10110] 21 UserDefined $npbeam 1619 1619 1619 0.0 0.5 1.0 0.371 0.667 0.167
puts "Elements Modelled"
pattern Plain [expr 1] Linear {
# sp 10107 1 [expr 1.98402000000000e-05 ]
# sp 10107 2 [expr 0.0518265000000000 ]
# sp 10107 3 [expr 0.00472280000000000 ]
sp 10110 1 [expr -0.000550924000000000 ]
sp 10110 2 [expr 0.0528595000000000 ]
sp 10110 3 [expr -0.00929054000000000 ]
}
# Initialize Analysis Parameters
system SparseGeneral
constraints Penalty 1E20 1E20
numberer Plain
# Linear algorithm creates explicit solution strategy
algorithm Linear
set delta 0.02
integrator LoadControl [expr $delta]
analysis Static
# Analyze one step
set ok [analyze 5]
if {$ok != 0} {
puts "Analysis FAILED"
} else {
puts "Analysis completed SUCCESSFULLY"
}
database File ModelSaves
save 1
Re: Large number of sp constraints - Convergence
Hi Frank,
Were you able to take a look at this example and determine the issue with the database commands? We are rather stuck without having this working.
Justin
Were you able to take a look at this example and determine the issue with the database commands? We are rather stuck without having this working.
Justin