Plates and cylindrical shells#
A Shell is one rectangular domain of a plate, \(0 \le x \le a\),
\(0 \le y \le b\), or of a cylindrical shell of radius \(r\), with \(y\) the arc
length along the circumference. It holds the inputs of the model and
calculates the structural matrices and force vectors, which are solved with
structsolve. The same
class is the building block of the assemblies MultiDomain and
StiffPanelBay.
Inputs#
Geometry and model. The dimensions a, b and the radius r
(None for a plate). The attribute model selects the kinematics and
the non-linear equations, see panels.models; when it is not given, a
plate gets 'plate_clpt_donnell' and a cylinder
'cylshell_clpt_sanders'; plates with large rotations, e.g. the domains
of a wing box, need 'plate_clpt_gl', see Large rotations: plates with Green-Lagrange membrane strains, or
'plate_clpt_tl' when they also bend through large rotations, see
Large rotations: total-Lagrangian Kirchhoff-Love plates, whose exact integration by default costs about twice
that of 'plate_clpt_gl', and half with nx = gauss_points(m), ny =
gauss_points(n), not exact but enough in practice. The models based on the classical laminated
plate theory (CLPT) have the 3 degrees of freedom \(u, v, w\) per term, those
based on the shear deformation theories (FSDT, TSDT) the 5 degrees of
freedom \(u, v, w, \phi_x, \phi_y\).
Laminate. The stacking sequence stack, the ply thickness plyt
and the lamina properties laminaprop, or one value per ply with
plyts and laminaprops, the density rho (or rhos) and the
offset of the laminate offset build the laminate Shell.lam with
composites.laminated_plate(), whose constitutive matrix Shell.ABD
enters every kernel. A stiffness that varies over the domain is given
instead by ABDnxny, one matrix per integration point. The transverse
shear stiffness of the FSDT is controlled by fsdt_shear_correction, and
the TSDT with an offset is described in Third-order shear deformation theory with a laminate offset.
Approximation. The numbers of terms m and n of the
approximation functions along \(x\) and \(y\), at most 30, see
Bardell’s hierarchical functions, and the numbers of integration points nx
and ny of the numerically integrated matrices, by default
max(2*m - 1, 7) and max(2*n - 1, 7) for the current m and n,
the smallest numbers that integrate exactly the products of up to four
approximation functions, see gauss_points(). The boundary conditions are the flags of the edges, see
Boundary conditions.
Loads. Point, line and pressure loads and the constant stress resultants of a prestress, see Loads.
The constructor sets the defaults, then the given attributes, and builds
the laminate when a and b are given; the calculation methods
rebuild the laminate and the size from the current attributes, see
Shell.
Matrices and vectors#
The size of the matrices and vectors is that of the vector of the Ritz
constants \(\boldsymbol{c}\), Shell.get_size():
quantity |
method |
used by |
|---|---|---|
constitutive stiffness \(\boldsymbol{K}_C\) |
|
all analyses |
geometric stiffness \(\boldsymbol{K}_G\) |
|
buckling, prestress |
mass \(\boldsymbol{M}\) |
|
frequency, flutter |
aerodynamic stiffness and damping |
|
flutter |
external force vector \(\boldsymbol{F}_{ext}\) |
|
static analyses |
internal force vector \(\boldsymbol{F}_{int}\) |
|
non-linear analyses |
tangent stiffness \(\boldsymbol{K}_T\) |
|
non-linear analyses |
product \(\boldsymbol{K}_T \boldsymbol{v}\) |
|
iterative solvers |
load stiffness of follower pressures |
|
follower loads |
The linear matrices of a constant constitutive matrix over the whole domain
are calculated in closed form; the others, and all of them when c,
ABDnxny or a partial integration domain is given, are integrated
numerically, see Bardell’s hierarchical functions. The non-linear quantities
follow the Donnell or Sanders-Koiter kinematics of the model, with a tangent
stiffness matrix that is the exact derivative of the internal force vector,
see Tangent stiffness matrix and its product by a vector. The integration can be limited to a part of the
domain with x1, x2, y1, y2, see
Shell.integration_limits(), which is how the panels of a
StiffPanelBay share one set of approximation functions.
Analyses#
The methods above have the signatures expected by the solvers of
structsolve:
linear static:
solve(kC, fext), see Linear static analysis;linear buckling:
lb(kC, kG), with \(\boldsymbol{K}_G\) of the constant stress resultantsNxx,Nyy,Nxyor of a static solutionc, see Linear buckling analysis;frequency:
freq(kC, kM), with an optional prestress \(\boldsymbol{K}_G\), see Frequency analysis;panel flutter:
freq(kC + kG + kA, kM), see Panel flutter with the piston theory;non-linear static:
structsolve.Analysiswithcalc_fext,calc_fint,calc_kCandcalc_kG, with the Newton-Raphson or the arc-length methods, see Non-linear static analysis with the Newton-Raphson method and Non-linear static analysis with the arc-length methods;follower pressures, in all the analyses above, see Follower pressure loads: theory.
Results#
The fields at points or over a grid are calculated from the Ritz constants
with Shell.uvw(), Shell.strain() and Shell.stress(),
plotted with plot_shell(), and the shell with its results is saved
with Shell.save(), see Field outputs, plots and files.