Choosing the transverse shear correction#
The FSDT gives transverse shear strains constant through the thickness, whereas equilibrium requires transverse shear stresses that vary through the thickness and vanish at the faces. The strain energy of the constant distribution is corrected by a transverse shear stiffness \(A_{ts}\) smaller than the constant-strain one, in the simplest case
with \(\kappa = 5/6\) for a homogeneous plate. For a laminate the correction
depends on the stacking sequence and on the direction, and it is computed
from the plies by Laminate.calc_transverse_shear_stiffness(), called
by Laminate.calc_constitutive_matrix().
The corrected stiffness Ats#
A44, A45, A55, i.e. Laminate.Ats, always contain the
shear correction, and they are the transverse shear stiffnesses to be used in
an FSDT model as they are. The uncorrected Abar_ts is the one used in the
TSDT, which needs no correction, see Laminate constitutive matrices per plate theory.
The method is chosen with the argument shear_correction of
laminated_plate() and isotropic_plate(), or by changing the
attribute shear_correction and calling
Laminate.calc_transverse_shear_stiffness() again:
lam = laminated_plate(stack, plyt=plyt, laminaprop=laminaprop,
shear_correction='vlachoutsis')
lam.shear_correction = 'rohwer'
lam.calc_transverse_shear_stiffness()
Methods and their scope#
|
scope |
homogeneous plate |
|---|---|---|
|
any laminate, also unsymmetric, full 2x2 matrix
including |
5/6 |
|
scalar factor per direction [2], exact for specially orthotropic plies |
5/6 |
|
unsymmetric orthotropic laminates [3], same
result as |
5/6 |
|
symmetric laminates only [4] |
5/6 |
|
equivalence of the average shear strain [5] |
1 |
|
first thickness-shear frequency [6], positive ply densities required |
\(\pi^2/12\) |
|
\(\kappa = 5/6\) for any laminate |
5/6 |
|
no correction, |
1 |
The scalar methods apply their factors as A55 = k13*Abar55, A44 =
k23*Abar44 and A45 = (k13 + k23)/2*Abar45, which gives A45 = 0
whenever Abar45 = 0, e.g. for every balanced laminate, see
Laminate.make_balanced(), whereas 'rohwer' captures the coupling of the
bending-twisting terms D16, D26. The details of each method are in
Laminate.calc_transverse_shear_stiffness().
The result of 'rohwer' is tied to the laminate axes \(x\), \(y\), i.e. it is
not invariant to a rotation of the axes. When a laminate is used with its
material direction rotated with respect to the axes of a model, a new
Laminate with the ply angles shifted by the rotation gives the
transverse shear stiffness in the axes of the model, instead of a tensor
rotation of Ats.
scf_k13 and scf_k23#
The attributes scf_k13 = A55/Abar55 and scf_k23 = A44/Abar44 are
informative only: the correction is already inside Ats, and they must not
be applied to it again. They are useful to compare the methods, or to report
the equivalent scalar factors of 'rohwer'.
Using another correction factor#
A model that requires its own shear correction factors, e.g. from a reference solution, applies them to the uncorrected matrix:
k13, k23 = 0.8, 0.75
Ats_user = np.array([[k23*lam.Abar44, (k13 + k23)/2*lam.Abar45],
[(k13 + k23)/2*lam.Abar45, k13*lam.Abar55]])
or k*lam.Abar_ts with a single factor. With shear_correction=None,
Ats is equal to Abar_ts.
Problem-dependent factors#
The methods above assume static states of the laminate alone, e.g. the
cylindrical bending states of 'rohwer'. From the strain gradients of an
actual FSDT solution, Laminate.calc_equilibrium_transverse_shear()
recovers the transverse shear stresses by integrating the equilibrium
equations through the thickness, and Laminate.calc_aposteriori_energy()
gives their strain energies, which lead to a posteriori factors in the sense
of Noor and Peters [7]. See Transverse shear stresses.