In this example a simple problem in shell dynamics is considered. The structure is a curved hoop shell structure that looks like the roof of a Safeway.
Files Required
Model
For shell analysis, a typical shell element is defined as a surface in three dimensional space. Each node of a shell analysis has six degrees of freedom, three displacements and three rotations. Thus the model is defined with $ndm := 3$ and $ndf := 6$.
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, 5,7,9\} are defined such that the structure is curved in three dimensional space.
The OpenSees shell element is constructed using the command ``ShellMITC4''.
An elastic membrane-plate material section model, appropriate for shell analysis, is constructed using the ``ElasticMembranePlateSection'' command. In this case, the elastic modulus $E := 3.0e3$, Poisson's ratio $\nu := 0.25$, the thickness $h := 1.175$ and the mass density per unit volume $\rho := 1.27$ For initial gravity load analysis, a single load pattern with a linear time series and three vertical nodal loads are used. Boundary conditions are applied using the fixZ command. In this case, all the nodes whose z-coordiate is $0.0$ have the boundary condition \{1,1,1, 0,1,1\}. All degrees-of-freedom are fixed except rotation about the x-axis, which is free. The same boundary conditions are applied where the z-coordinate is $40.0$.
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. Five 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 $250$ time increments with a time step $\Delta t := 0.50$.
OpenSees Script
# OpenSees Example 7.1
# OpenSees Primer
#
# Units: kips, in, sec
# ----------------------------
# Start of model generation
# ----------------------------
model basic -ndm 3 -ndf 6
# create the material
section ElasticMembranePlateSection 1 3.0e3 0.25 1.175 1.27
# set some parameters for node and element generation
set Plate ShellMITC4
set eleArgs "1"
#these should both be even
set nx 8
set ny 2
#loaded nodes
set mid [expr ( ($nx+1)*($ny+1)+1 ) / 2 ]
set side1 [expr ($nx + 2)/2 ]
set side2 [expr ($nx+1)*($ny+1) - $side1 + 1 ]
# generate the nodes and elements
block2D $nx $ny 1 1 $Plate $eleArgs {
1 -20 0 0
2 -20 0 40
3 20 0 40
4 20 0 0
5 -10 10 20
7 10 10 20
9 0 10 20
}
# add some loads
pattern Plain 1 Linear {
load $mid 0.0 -0.5 0.0 0.0 0.0 0.0
load $side1 0.0 -0.25 0.0 0.0 0.0 0.0
load $side2 0.0 -0.25 0.0 0.0 0.0 0.0
}
# define the boundary conditions
# rotation free about x-axis (remember right-hand-rule)
fixZ 0.0 1 1 1 0 1 1
fixZ 40.0 1 1 1 0 1 1
# 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-10 20 1
# Solution algorithm
algorithm Newton
# DOF numberer
numberer RCM
# Cosntraint handler
constraints Plain
# System of equations solver
system SparseGeneral -piv
#system ProfileSPD
# Analysis for gravity load
#analysis Transient
analysis Static
# Perform the gravity load analysis
analyze 5
# --------------------------
# End of static analysis
# --------------------------
# ----------------------------
# Start of recorder generation
# ----------------------------
recorder Node -file Node.out -time -node $mid -dof 2 disp
recorder plot Node.out CenterNodeDisp 625 10 625 450 -columns 1 2
recorder display shellDynamics 10 10 600 600 -wipe
prp -100 20 30
vup 0 1 0
display 1 0 100
# --------------------------
# 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-10 20 1
algorithm Newton
numberer RCM
constraints Plain
#integrator GeneralizedMidpoint 0.50
integrator Newmark 0.50 0.25
analysis Transient
# Perform the transient analysis
analyze 250 0.5
Results
The results consist of the file Node.out, which contains a line for every time step. Each line contains the time and the vertical displacement at the upper center of the hoop structure. The time history is shown in figure~\ref{shelldisp}.
FIGURE HERE