Defining a laminate: conventions#
A laminate is usually created with laminated_plate(), from the ply
angles, thicknesses, material properties and densities, or with
isotropic_plate() for a single isotropic layer:
from composites import laminated_plate
laminaprop = (142e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 3.2e9)
lam = laminated_plate([0, 45, -45, 90], plyt=0.125e-3,
laminaprop=laminaprop, rho=1600., offset=0.)
The conventions below apply to every Laminate.
Stacking sequence and thickness coordinate#
The angles of stack, and the lists plyts, laminaprops and
rhos, run from the bottom to the top ply. The coordinate \(z\) is normal to
the reference surface, pointing from the bottom to the top face, and it is
measured from the reference surface, which is the surface of the
generalized strains, see Laminate constitutive matrices per plate theory.
Offset#
offset is the position of the mid-surface relative to the reference
surface, \(d\) below. The plies run from
such that offset = 0 puts the reference surface at the mid-surface,
offset = +h/2 at the bottom face and offset = -h/2 at the top face.
For example, a skin modelled on its mould line, with the laminate above it,
has offset = h/2. With an offset, B is not zero even for an
isotropic plate, \(B = d h C\), see Isotropic plate with an offset, and the same
holds for the odd moments of the density, see Thickness integrals for mass matrices.
Laminate.make_balanced(), Laminate.make_orthotropic(),
Laminate.make_symmetric() and Laminate.make_smeared() require
offset = 0.
Material properties#
laminaprop is read by read_laminaprop(), with 2, 6 or 9 entries:
(E, nu): isotropic, withG = E/(2*(1 + nu))for the three shear moduli;(E11, E22, nu12, G12, G13, G23): orthotropic ply in plane stress, the usual case;(E11, E22, nu12, G12, G13, G23, E33, nu13, nu23): orthotropic ply with the properties of the three-dimensional constitutive matrix ofMatLamina.get_constitutive_matrix().
The index 1 is the fibre direction, 2 the in-plane transverse direction and 3
the normal direction. The ply stiffnesses used in the laminate integrals are
always the plane-stress ones, see Lamina.rebuild(); G13 and
G23 give the transverse shear stiffnesses q44L, q45L, q55L.
Ply angle#
The ply angle \(\theta\), in degrees, is measured from the laminate \(x\) axis to
the material direction 1, positive from \(x\) towards \(y\), i.e. a positive
rotation about \(z\): the direction 1 is \(\{\cos\theta, \sin\theta\}\) in the
laminate axes. Reversing the sign of all the angles changes the sign of the
16 and 26 terms and of A45.
Units#
No units are assumed, and any consistent system can be used, e.g. N, m and
kg, with the densities in kg/m3, or N, mm and t, with the densities
in t/mm3. The dimension of each attribute is given in the
documentation of Laminate.
Ordering of stresses and strains#
In-plane: \(\{\sigma_{xx}, \sigma_{yy}, \tau_{xy}\}\) and \(\{\varepsilon_{xx}, \varepsilon_{yy}, \gamma_{xy}\}\), with the engineering shear strain \(\gamma_{xy} = 2 \varepsilon_{xy}\).
Transverse shear: \(\{\tau_{yz}, \tau_{xz}\}\), \(\{\gamma_{yz}, \gamma_{xz}\}\), with \(\gamma = 2 \varepsilon\), and \(\{Q_y, Q_x\}\); the index 4 refers to \(yz\) and the index 5 to \(xz\).
Laminate.ABDrelates \(\{N_{xx}, N_{yy}, N_{xy}, M_{xx}, M_{yy}, M_{xy}\}\) to \(\{\varepsilon^{(0)}_{xx}, \varepsilon^{(0)}_{yy}, \gamma^{(0)}_{xy}, \varepsilon^{(1)}_{xx}, \varepsilon^{(1)}_{yy}, \gamma^{(1)}_{xy}\}\), the same order used by the strain gradients ofLaminate.calc_equilibrium_transverse_shear().Lamina.get_constitutive_matrix()is5 x 5, in the laminate axes, ordered as \(\{xx, yy, xy, yz, xz\}\).MatLamina.get_constitutive_matrix()is6 x 6, in the material axes, ordered as \(\{11, 22, 33, 23, 13, 12\}\).Laminate.calc_transverse_shear_stress()receivesQy, Qxand returnstau_yz, tau_xz.