In this example a simple problem in solid dynamics is considered. The structure is a simply supported beam modelled with two dimensional solid elements.
Files Required
Model
For two dimensional analysis, a typical solid element is defined as a volume in two dimensional space. Each node of the analysis has two displacement degrees of freedom. Thus the model is defined with $ndm := 2$ and $ndf := 2$.
For this model, a mesh is generated using the ``block2D'' command. The number of nodes in the local x-direction of the block is $nx$ and the number of nodes in the local y-direction of the block is $ny$. The block2D generation nodes \{1,2,3,4\} are prescribed to define the two dimensional domain of the beam, which is of size $40\times10$.
Three possible quadrilateral elements can be used for the analysis.
These may be created using the terms
``bbarQuad,''
``enhancedQuad'' or
``quad.'' This is a plane strain problem.
An elastic isotropic material is used.
For initial gravity load analysis, a single load pattern with a linear time series and two vertical nodal loads are used.
Analysis
A solution algorithm of type Newton is used for the problem. The solution algorithm uses a ConvergenceTest which tests convergence on the norm of the energy increment vector. Ten static load steps are performed.
Subsequent to the static analysis, the wipeAnalysis and remove loadPatern commands are used to remove the nodal loads and create a new analysis. The nodal displacements have not changed. However, with the external loads removed the structure is no longer in static equilibrium.
The integrator for the dynamic analysis if of type GeneralizedMidpoint with $\alpha := 0.5$. This choice is uconditionally stable and energy conserving for linear problems. Additionally, this integrator conserves linear and angular momentum for both linear and non-linear problems. The dynamic analysis is performed using $100$ time increments with a time step $\Delta t := 0.50$.
OpenSees Script
# OpenSees Example 6.1
# OpenSees Primer
#
# Units: kips, in, sec
# ----------------------------
# Start of model generation
# ----------------------------
# Create ModelBuilder with 3 dimensions and 6 DOF/node
model basic -ndm 2 -ndf 2
# create the material
nDMaterial ElasticIsotropic 1 1000 0.25 6.75
# Define geometry
# ---------------
# define some parameters
set Quad quad
set Quad bbarQuad
set Quad enhancedQuad
if {$Quad == "enhancedQuad" } {
set eleArgs "PlaneStrain2D 1"
}
if {$Quad == "quad" } {
set eleArgs "1 PlaneStrain2D 1"
}
if {$Quad == "bbarQuad" } {
set eleArgs "1"
}
set nx 8; # NOTE: nx MUST BE EVEN FOR THIS EXAMPLE
set ny 2
set bn [expr $nx + 1 ]
set l1 [expr $nx/2 + 1 ]
set l2 [expr $l1 + $ny*($nx+1) ]
# now create the nodes and elements using the block2D command
block2D $nx $ny 1 1 $Quad $eleArgs {
1 0 0
2 40 0
3 40 10
4 0 10
}
# Single point constraints
# node u1 u2
fix 1 1 1
fix $bn 0 1
# Gravity loads
pattern Plain 1 Linear {
load $l1 0.0 -1.0
load $l2 0.0 -1.0
}
# --------------------------------------------------------------------
# Start of static analysis (creation of the analysis & analysis itself)
# --------------------------------------------------------------------
# Load control with variable load steps
# init Jd min max
integrator LoadControl 1.0 1 1.0 10.0
# Convergence test
# tolerance maxIter displayCode
test EnergyIncr 1.0e-12 10 0
# Solution algorithm
algorithm Newton
# DOF numberer
numberer RCM
# Cosntraint handler
constraints Plain
# System of equations solver
system ProfileSPD
# Analysis for gravity load
analysis Static
# Perform the analysis
analyze 10
# --------------------------
# End of static analysis
# --------------------------
# ----------------------------
# Start of recorder generation
# ----------------------------
recorder Node -file Node.out -time -node $l1 -dof 2 disp
recorder plot Node.out CenterNodeDisp 625 10 625 450 -columns 1 2
# create the display
recorder display SimplySupportedBaam 10 10 800 200 -wipe
prp 20 5.0 100.0
vup 0 1 0
viewWindow -30 30 -10 10
display 10 0 5
# --------------------------
# End of recorder generation
# --------------------------
# ---------------------------------------
# Create and Perform the dynamic analysis
# ---------------------------------------
# Remove the static analysis & reset the time to 0.0
wipeAnalysis
setTime 0.0
# Now remove the loads and let the beam vibrate
remove loadPattern 1
# Create the transient analysis
test EnergyIncr 1.0e-12 10 0
algorithm Newton
numberer RCM
constraints Plain
integrator Newmark 0.5 0.25
analysis Transient
# Perform the transient analysis (50 sec)
# numSteps dt
analyze 100 0.5
Results
The results consist of the file Node.out, which contains a line for very time step. Each line contains the time and the vertical displacement at the bottom center of the beam.
The time history is shown in figure~\ref{beamdisp}.
FIGURE HERE