SSPquad Element: Difference between revisions
No edit summary |
No edit summary |
||
Line 50: | Line 50: | ||
---- | ---- | ||
<source lang="tcl"> | |||
######################################################### | |||
# # | |||
# Coarse-mesh cantilever beam analysis. The beam is # | |||
# modeled with only 4 elements and uses anti-symmetry. # | |||
# # | |||
# ---> Basic units used are kN and meters # | |||
# # | |||
######################################################### | |||
wipe | |||
model BasicBuilder -ndm 2 -ndf 2 | |||
# beam dimensions | |||
set L 24.0 | |||
set D 3.0 | |||
# define number and size of elements | |||
set nElemX 4 | |||
set nElemY 1 | |||
set nElemT [expr $nElemX*$nElemY] | |||
set sElemX [expr $L/$nElemX] | |||
set sElemY [expr $D/$nElemY] | |||
set nNodeX [expr $nElemX + 1] | |||
set nNodeY [expr $nElemY + 1] | |||
set nNodeT [expr $nNodeX*$nNodeY] | |||
# create the nodes | |||
set nid 1 | |||
set count 0.0 | |||
for {set j 1} {$j <= $nNodeY} {incr j 1} { | |||
for {set i 1} {$i <= $nNodeX} {incr i 1} { | |||
node $nid [expr 0.0 + $count*$sElemX] [expr ($j-1)*$sElemY] | |||
set nid [expr $nid + 1] | |||
set count [expr $count + 1] | |||
} | |||
set count 0.0 | |||
} | |||
# boundary conditions | |||
fix 1 1 1 | |||
fix [expr $nElemY*$nNodeX+1] 1 0 | |||
for {set k 2} {$k <= $nNodeX} {incr k 1} { | |||
fix $k 1 0 | |||
} | |||
# define material | |||
set matID 1 | |||
set E 20000 | |||
set nu 0.25 | |||
nDMaterial ElasticIsotropic $matID $E $nu | |||
# create elements | |||
set thick 1.0 | |||
set b1 0.0 | |||
set b2 0.0 | |||
set count 1 | |||
for {set j 1} {$j <= $nNodeY} {incr j 1} { | |||
for {set i 1} {$i <= $nNodeX} {incr i 1} { | |||
if {($i < $nNodeX) && ($j < $nNodeY)} { | |||
set nI [expr $i+($j-1)*$nNodeX] | |||
set nJ [expr $i+($j-1)*$nNodeX+1] | |||
set nK [expr $i+$j*$nNodeX+1] | |||
set nL [expr $i+$j*$nNodeX] | |||
element SSPquad $count $nI $nJ $nK $nL $matID "PlaneStrain" $thick $b1 $b2 | |||
set count [expr $count+1] | |||
} | |||
} | |||
} | |||
# create recorders | |||
set step 0.1 | |||
recorder Node -time -file results/d1p1m1.out -dT $step -nodeRange 1 $nNodeT -dof 1 2 disp | |||
recorder Element -eleRange 1 $nElemT -time -file results/s1p1m1.out -dT $step stress | |||
recorder Element -eleRange 1 $nElemT -time -file results/e1p1m1.out -dT $step strain | |||
# create loading | |||
set P -300.0; | |||
pattern Plain 3 {Series -time {0 10 15} -values {0 1 1} -factor 1} { | |||
load $nNodeT 0.0 [expr 0.15625*$P] | |||
load $nNodeX 0.0 [expr 0.34375*$P] | |||
load [expr $nNodeX+1] 0.0 [expr -0.15625*$P] | |||
} | |||
# create analysis | |||
integrator LoadControl 0.1 | |||
numberer RCM | |||
system SparseGeneral | |||
constraints Transformation | |||
test NormDispIncr 1e-5 40 1 | |||
algorithm Newton | |||
analysis Static | |||
analyze 105 | |||
wipe | |||
</source> |
Revision as of 18:42, 18 November 2011
- Command_Manual
- Tcl Commands
- Modeling_Commands
- model
- uniaxialMaterial
- ndMaterial
- frictionModel
- section
- geometricTransf
- element
- node
- sp commands
- mp commands
- timeSeries
- pattern
- mass
- block commands
- region
- rayleigh
- Analysis Commands
- Output Commands
- Misc Commands
- DataBase Commands
This command is used to construct a SSPquad element object.
element SSPquad $eleTag $iNode $jNode $kNode $lNode $matTag $type $thick <$b1 $b2> |
$eleTag | unique integer tag identifying element object |
$iNode $jNode $kNode $lNode | the four nodes defining the element, input in counterclockwise order |
$matTag | unique integer tag associated with previously-defined nDMaterial object |
$type | string to relay material behavior to the element, can be either "PlaneStrain" or "PlaneStress" |
$thick | thickness of the element in out-of-plane direction |
$b1 $b2 | constant body forces in x- and y-directions, respectively (optional, default = 0.0) |
The SSPquad element is a four-node quadrilateral element using physically stabilized single-point integration (SSP --> Stabilized Single Point). The stabilization incorporates an assumed strain field in which the volumetric dilation and the shear strain associated with the the hourglass modes are zero, resulting in an element which is free from volumetric and shear locking. The elimination of shear locking results in greater coarse mesh accuracy in bending dominated problems, and the elimination of volumetric locking improves accuracy in nearly-incompressible problems. Analysis times are generally faster than corresponding full integration elements.
NOTES:
- Valid queries to the SSPquad element when creating an ElementalRecorder object correspond to those for the nDMaterial object assigned to the element (e.g., 'stress', 'strain'). Material response is recorded at the single integration point located in the center of the element.
- The SSPquad element was designed with intentions of duplicating the functionality of the Quad Element. If an example is found where the SSPquad element cannot do something that works for the Quad Element, e.g., material updating, please contact the developers listed below so the bug can be fixed.
EXAMPLES:
SSPquad element definition with element tag 1, nodes 1, 2, 3, and 4, material tag 1, plane strain conditions, unit thickness, horizontal body force of zero, and vertical body force of -10.0
element SSPquad 1 1 2 3 4 1 "PlaneStrain" 1.0 0.0 -10.0
Elemental recorders for stress and strain when using the SSPquad element (note the difference from the Quad Element)
recorder Element -eleRange 1 $numElem -time -file stress.out stress recorder Element -eleRange 1 $numElem -time -file strain.out strain
Code Developed by: Chris McGann, Pedro Arduino, & Peter Mackenzie-Helnwein, at the University of Washington
#########################################################
# #
# Coarse-mesh cantilever beam analysis. The beam is #
# modeled with only 4 elements and uses anti-symmetry. #
# #
# ---> Basic units used are kN and meters #
# #
#########################################################
wipe
model BasicBuilder -ndm 2 -ndf 2
# beam dimensions
set L 24.0
set D 3.0
# define number and size of elements
set nElemX 4
set nElemY 1
set nElemT [expr $nElemX*$nElemY]
set sElemX [expr $L/$nElemX]
set sElemY [expr $D/$nElemY]
set nNodeX [expr $nElemX + 1]
set nNodeY [expr $nElemY + 1]
set nNodeT [expr $nNodeX*$nNodeY]
# create the nodes
set nid 1
set count 0.0
for {set j 1} {$j <= $nNodeY} {incr j 1} {
for {set i 1} {$i <= $nNodeX} {incr i 1} {
node $nid [expr 0.0 + $count*$sElemX] [expr ($j-1)*$sElemY]
set nid [expr $nid + 1]
set count [expr $count + 1]
}
set count 0.0
}
# boundary conditions
fix 1 1 1
fix [expr $nElemY*$nNodeX+1] 1 0
for {set k 2} {$k <= $nNodeX} {incr k 1} {
fix $k 1 0
}
# define material
set matID 1
set E 20000
set nu 0.25
nDMaterial ElasticIsotropic $matID $E $nu
# create elements
set thick 1.0
set b1 0.0
set b2 0.0
set count 1
for {set j 1} {$j <= $nNodeY} {incr j 1} {
for {set i 1} {$i <= $nNodeX} {incr i 1} {
if {($i < $nNodeX) && ($j < $nNodeY)} {
set nI [expr $i+($j-1)*$nNodeX]
set nJ [expr $i+($j-1)*$nNodeX+1]
set nK [expr $i+$j*$nNodeX+1]
set nL [expr $i+$j*$nNodeX]
element SSPquad $count $nI $nJ $nK $nL $matID "PlaneStrain" $thick $b1 $b2
set count [expr $count+1]
}
}
}
# create recorders
set step 0.1
recorder Node -time -file results/d1p1m1.out -dT $step -nodeRange 1 $nNodeT -dof 1 2 disp
recorder Element -eleRange 1 $nElemT -time -file results/s1p1m1.out -dT $step stress
recorder Element -eleRange 1 $nElemT -time -file results/e1p1m1.out -dT $step strain
# create loading
set P -300.0;
pattern Plain 3 {Series -time {0 10 15} -values {0 1 1} -factor 1} {
load $nNodeT 0.0 [expr 0.15625*$P]
load $nNodeX 0.0 [expr 0.34375*$P]
load [expr $nNodeX+1] 0.0 [expr -0.15625*$P]
}
# create analysis
integrator LoadControl 0.1
numberer RCM
system SparseGeneral
constraints Transformation
test NormDispIncr 1e-5 40 1
algorithm Newton
analysis Static
analyze 105
wipe