Shell property module (pyfe3d.shellprop)#
Highly based on the composites. module.
- class pyfe3d.shellprop.GradABD#
Container to store the gradients of the ABD matrix and of the constant-strain transverse shear stiffnesses with respect to the lamination parameters
- Attributes:
- gradAij, gradBij, gradDij, gradAtsijtuple of 2D np.array objects
The shapes of these gradient matrices are:
gradAij: (6, 5) gradBij: (6, 5) gradDij: (6, 5) gradAtsij: (3, 3)
They contain the gradients of each laminate stiffness with respect to the thickness and respective lamination parameters. The rows and columns correspond to:
Methods
calc_LP_grad(self, double thickness, ...)Gradients of the shell stiffnesses with respect to the thickness and lamination parameters
- calc_LP_grad(self, double thickness, MatLamina mat, LaminationParameters lp) void#
Gradients of the shell stiffnesses with respect to the thickness and lamination parameters
- Parameters:
- thicknessfloat
The total thickness of the laminate
- mat
MatLaminaobject Material object
- lp
LaminationParametersobject The container class with all lamination parameters already defined
- Returns:
- None
The attributes of the object are updated.
- gradAij#
gradAij: ‘double[:, ::1]’
- gradAtsij#
gradAtsij: ‘double[:, ::1]’
- gradBij#
gradBij: ‘double[:, ::1]’
- gradDij#
gradDij: ‘double[:, ::1]’
- class pyfe3d.shellprop.Lamina#
- Attributes:
Methods
get_constitutive_matrix(self)Return the constitutive matrix
Return displacement transformation matrix from lamina to laminate
Return stress transformation matrix from laminate to lamina
Return stress transformation matrix from lamina to laminate
rebuild(self)Update constitutive matrices
- cos2t#
cos2t: ‘double’
- cos4t#
cos4t: ‘double’
- cost#
cost: ‘double’
- get_constitutive_matrix(self) double[:, ::1]#
Return the constitutive matrix
- get_transf_matrix_displ_to_laminate(self) double[:, ::1]#
Return displacement transformation matrix from lamina to laminate
- get_transf_matrix_stress_to_lamina(self) double[:, ::1]#
Return stress transformation matrix from laminate to lamina
- get_transf_matrix_stress_to_laminate(self) double[:, ::1]#
Return stress transformation matrix from lamina to laminate
- h#
h: ‘double’
- matlamina#
matlamina: pyfe3d.shellprop.MatLamina
- plyid#
plyid: ‘int’
- q11L#
q11L: ‘double’
- q12L#
q12L: ‘double’
- q16L#
q16L: ‘double’
- q22L#
q22L: ‘double’
- q26L#
q26L: ‘double’
- q44L#
q44L: ‘double’
- q45L#
q45L: ‘double’
- q55L#
q55L: ‘double’
- q66L#
q66L: ‘double’
- rebuild(self) void#
Update constitutive matrices
Reference:
Reddy, J. N., Mechanics of Laminated Composite Plates and Shells - Theory and Analysys. Second Edition. CRC PRESS, 2004.
- sin2t#
sin2t: ‘double’
- sin4t#
sin4t: ‘double’
- sint#
sint: ‘double’
- thetadeg#
thetadeg: ‘double’
- class pyfe3d.shellprop.LaminationParameters#
Lamination parameters
- Attributes:
- xiA1, xiA2, xiA3, xiA4float
Lamination parameters \(\xi_{Ai}\) (in-plane)
- xiB1, xiB2, xiB3, xiB4float
Lamination parameters \(\xi_{Bi}\) (in-plane coupling with bending)
- xiD1, xiD2, xiD3, xiD4float
Lamination parameters \(\xi_{Di}\) (bending)
- xiAts1, xiAts2float
Lamination parameters \(\xi_{Ats,i}\) (transverse shear)
- xiA1#
xiA1: ‘double’
- xiA2#
xiA2: ‘double’
- xiA3#
xiA3: ‘double’
- xiA4#
xiA4: ‘double’
- xiAts1#
xiAts1: ‘double’
- xiAts2#
xiAts2: ‘double’
- xiB1#
xiB1: ‘double’
- xiB2#
xiB2: ‘double’
- xiB3#
xiB3: ‘double’
- xiB4#
xiB4: ‘double’
- xiD1#
xiD1: ‘double’
- xiD2#
xiD2: ‘double’
- xiD3#
xiD3: ‘double’
- xiD4#
xiD4: ‘double’
- class pyfe3d.shellprop.MatLamina#
Orthotropic material lamina
- Attributes:
e1floate1: ‘double’
e2floate2: ‘double’
g12floatg12: ‘double’
g13floatg13: ‘double’
g23floatg23: ‘double’
nu12nu12: ‘double’
nu13nu13: ‘double’
nu23nu23: ‘double’
nu21nu21: ‘double’
nu31nu31: ‘double’
nu32nu32: ‘double’
rhorho: ‘double’
a1a1: ‘double’
a2a2: ‘double’
a3a3: ‘double’
treftref: ‘double’
- st1,st2
allowable tensile stresses for directions 1 and 2
- sc1,sc2
allowable compressive stresses for directions 1 and 2
ss12ss12: ‘double’
q11q11: ‘double’
q12q12: ‘double’
q13q13: ‘double’
q21q21: ‘double’
q22q22: ‘double’
q23q23: ‘double’
q31q31: ‘double’
q32q32: ‘double’
q33q33: ‘double’
q44q44: ‘double’
q55q55: ‘double’
q66q66: ‘double’
- ci
lamina stiffness constants
- ui
lamina material invariants
Methods
get_constitutive_matrix(self)Return the constitutive matrix
get_invariant_matrix(self)Return the invariant matrix
rebuild(self)Update constitutive and invariant terms
Trace-normalize the lamina properties for plane stress
Notes
For isotropic materials when the user defines \(\nu\) and \(E\), \(G\) will be recaculated based on equation: \(G = E/(2 \times (1+\nu))\); in a lower priority if the user defines \(\nu\) and \(G\), \(E\) will be recaculated based on equation: \(E = 2 \times (1+\nu) \times G\).
- a1#
a1: ‘double’
- a2#
a2: ‘double’
- a3#
a3: ‘double’
- c11#
c11: ‘double’
- c12#
c12: ‘double’
- c13#
c13: ‘double’
- c22#
c22: ‘double’
- c23#
c23: ‘double’
- c33#
c33: ‘double’
- c44#
c44: ‘double’
- c55#
c55: ‘double’
- c66#
c66: ‘double’
- e1#
e1: ‘double’
- e2#
e2: ‘double’
- e3#
e3: ‘double’
- g12#
g12: ‘double’
- g13#
g13: ‘double’
- g23#
g23: ‘double’
- get_constitutive_matrix(self) double[:, ::1]#
Return the constitutive matrix
- get_invariant_matrix(self) double[:, ::1]#
Return the invariant matrix
- nu12#
nu12: ‘double’
- nu13#
nu13: ‘double’
- nu21#
nu21: ‘double’
- nu23#
nu23: ‘double’
- nu31#
nu31: ‘double’
- nu32#
nu32: ‘double’
- q11#
q11: ‘double’
- q12#
q12: ‘double’
- q13#
q13: ‘double’
- q21#
q21: ‘double’
- q22#
q22: ‘double’
- q23#
q23: ‘double’
- q31#
q31: ‘double’
- q32#
q32: ‘double’
- q33#
q33: ‘double’
- q44#
q44: ‘double’
- q55#
q55: ‘double’
- q66#
q66: ‘double’
- rebuild(self) void#
Update constitutive and invariant terms
Reference:
Reddy, J. N., Mechanics of laminated composite plates and shells. Theory and analysis. Second Edition. CRC Press, 2004.
- rho#
rho: ‘double’
- sc1#
sc1: ‘double’
- sc2#
sc2: ‘double’
- ss12#
ss12: ‘double’
- st1#
st1: ‘double’
- st2#
st2: ‘double’
- trace_normalize_plane_stress(self) void#
Trace-normalize the lamina properties for plane stress
Modify the original
MatLaminaobject with a trace-normalization performed after calculating the trace according to Eq. 1 of reference:Melo, J. D. D., Bi, J., and Tsai, S. W., 2017, “A Novel Invariant-Based Design Approach to Carbon Fiber Reinforced Laminates,” Compos. Struct., 159, pp. 44–52.
The trace calculated as \(tr = Q_{11} + Q_{22} + 2Q_{66}\). The universal in-plane stress stiffness components \(Q_{11},Q_{12},Q_{22},Q_{44},Q_{55},Q_{66}\) are divided by \(tr\), and the invariants \(U_1,U_2,U_3,U_4,U_5,U_6,U_7\) are calculated with the normalized stiffnesses, such they also become trace-normalized invariants. These can be accessed using the
u1,u2,u3,u4,u5,u6,u7attributes.
- tref#
tref: ‘double’
- u1#
u1: ‘double’
- u2#
u2: ‘double’
- u3#
u3: ‘double’
- u4#
u4: ‘double’
- u5#
u5: ‘double’
- u6#
u6: ‘double’
- u7#
u7: ‘double’
- class pyfe3d.shellprop.ShellProp#
- Attributes:
plieslistplies: list
stackliststack: list
hfloath: ‘double’
offsetfloatoffset: ‘double’
- e1, e2float
Equivalent laminate moduli in directions 1 and 2
g12floatg12: ‘double’
- nu12, nu21float
Equivalent laminate Poisson ratios in the 12 and 21 directions
- A44, A45, A55float
Transverse shear stiffnesses of the first-order shear deformation theory (FSDT) in the material coordinate system, with the shear correction already applied according to
shear_correction. The elements use them directly, without any shear correction factor. Seecalc_transverse_shear_stiffness()andcalc_Ats_element()for how they are brought to the element coordinate system.- Abar44, Abar45, Abar55float
Constant-strain (uncorrected) transverse shear stiffnesses \(\bar{A}_{ts} = \sum_k C_s^{(k)} h_k\).
- Abarbar44, Abarbar45, Abarbar55float
Constant-stress transverse shear stiffnesses \(\bar{\bar{A}}_{ts} = h^2 [\sum_k (C_s^{(k)})^{-1} h_k]^{-1}\), for comparison only. Equal to
nanwhen a ply has a singular \(C_s^{(k)}\).shear_correctionstr or Noneshear_correction: object
- scf_k13, scf_k23float
Reported shear correction ratios
A55/Abar55andA44/Abar44. They are informative only, the correction is already insideA44,A45,A55.intrhofloatintrho: ‘double’
intrhozfloatintrhoz: ‘double’
intrhoz2floatintrhoz2: ‘double’
Methods
calc_Ats_element(self, double thetadeg)Transverse shear stiffness in an element coordinate system
calc_constitutive_element(self, double thetadeg)Constitutive matrices in an element coordinate system
calc_constitutive_matrix(self)Calculate the laminate constitutive terms
Calculate the equivalent laminate properties
Calculate the lamination parameters.
Update the transverse shear stiffnesses
A44,A45,A55calc_transverse_shear_stress(self, double z, ...)Transverse shear stresses at a given height
force_balanced(self)Force a balanced laminate
force_orthotropic(self)Force an orthotropic laminate
force_symmetric(self)Force a symmetric laminate
- A11#
A11: ‘double’
- A12#
A12: ‘double’
- A16#
A16: ‘double’
- A22#
A22: ‘double’
- A26#
A26: ‘double’
- A44#
A44: ‘double’
- A45#
A45: ‘double’
- A55#
A55: ‘double’
- A66#
A66: ‘double’
- Abar44#
Abar44: ‘double’
- Abar45#
Abar45: ‘double’
- Abar55#
Abar55: ‘double’
- Abar_ts#
Constant-strain
[[Abar44, Abar45], [Abar45, Abar55]]
- Abarbar44#
Abarbar44: ‘double’
- Abarbar45#
Abarbar45: ‘double’
- Abarbar55#
Abarbar55: ‘double’
- Abarbar_ts#
Constant-stress
[[Abarbar44, Abarbar45], [Abarbar45, Abarbar55]]
- Ats#
Transverse shear stiffness matrix
[[A44, A45], [A45, A55]]Index 4 corresponds to \(yz\) and index 5 to \(xz\), such that \(\{Q_y, Q_x\}^T = A_{ts} \{\gamma_{yz}, \gamma_{xz}\}^T\). The shear correction is already applied, see
calc_transverse_shear_stiffness().
- B11#
B11: ‘double’
- B12#
B12: ‘double’
- B16#
B16: ‘double’
- B22#
B22: ‘double’
- B26#
B26: ‘double’
- B66#
B66: ‘double’
- D11#
D11: ‘double’
- D12#
D12: ‘double’
- D16#
D16: ‘double’
- D22#
D22: ‘double’
- D26#
D26: ‘double’
- D66#
D66: ‘double’
- calc_Ats_element(self, double thetadeg)#
Transverse shear stiffness in an element coordinate system
The element coordinate system is such that the material direction makes an angle \(\theta\) with the element \(x\) axis, measured towards the element \(y\) axis. This is the same rotation used by the shell elements, where \(m_{11} = \cos\theta\), \(m_{12} = -\sin\theta\), \(m_{21} = \sin\theta\) and \(m_{22} = \cos\theta\).
The transverse shear stiffness obtained with the equilibrium approach of Rohwer (1988) is not invariant to a rotation of the reference frame, because the two cylindrical bending states are tied to the \(x\) and \(y\) axes. Therefore, when
shear_correction='rohwer'and the plies are available, the stiffness corresponds to the plies rotated to the element frame, i.e. all ply angles shifted by \(\theta\), such that the assumed static state and the element kinematics refer to the same pair of directions.Re-evaluating the method of Rohwer for each element has a cost proportional to the number of plies. Instead, the compliance \(S = A_{ts}^{-1}\) in the element frame is represented exactly by its Fourier series:
\[S(\theta) = S_0 + \sum_{n=1}^{5} \left( S_{cn} \cos 2n\theta + S_{sn} \sin 2n\theta \right)\]because the equilibrium distribution \(f^{(k)}(z)\) is a polynomial of degree 4 in \(\cos\theta\), \(\sin\theta\) and \((C_s^{(k)})^{-1}\) of degree 2, such that \(S\) is a trigonometric polynomial of degree 10 with a period of 180 degrees. The coefficients are calculated once per laminate by
calc_transverse_shear_stiffness(), from 16 evaluations in rotated frames, and the cost per element becomes independent of the number of plies.In all other cases, i.e.
shear_correction'constant','vlachoutsis'orNone, or when no plies exist, e.g. for a property created from lamination parameters or withA44,A45,A55given directly, the stiffness is rotated as a second-order tensor:\[\begin{split}A_{ts}^e = T_s A_{ts} T_s^T \qquad T_s = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix}\end{split}\]which is exact for the constant-strain stiffness.
Note
Changes to
A44,A45,A55made aftercalc_constitutive_matrix()are only used for elements with \(m_{12} = 0\) when the plies are available andshear_correction='rohwer', because the stiffness is otherwise obtained from the Fourier coefficients calculated from the plies.- Parameters:
- thetadegfloat
Angle \(\theta\) in degrees.
- Returns:
- Atsnp.ndarray
Matrix
[[A44, A45], [A45, A55]]in the element coordinate system.
- calc_constitutive_element(self, double thetadeg)#
Constitutive matrices in an element coordinate system
The element coordinate system is such that the material direction makes an angle \(\theta\) with the element \(x\) axis, measured towards the element \(y\) axis, as used by the shell elements, with \(m_{11} = \cos\theta\), \(m_{12} = -\sin\theta\), \(m_{21} = \sin\theta\) and \(m_{22} = \cos\theta\).
- Parameters:
- thetadegfloat
Angle \(\theta\) in degrees.
- Returns:
- A, B, D, Atstuple of np.ndarray
The 3x3 matrices
A,B,Dand the 2x2 matrixAtsin the element coordinate system. Seecalc_Ats_element().
- calc_constitutive_matrix(self) void#
Calculate the laminate constitutive terms
This is the commonly called
ABDmatrix withshape=(6, 6). When the first-order shear deformation theory is used, the transverse shear stiffnessesA44,A45,A55are also required, which are calculated at the end bycalc_transverse_shear_stiffness(), with the shear correction selected byshear_correctionalready applied.
- calc_equivalent_properties(self) void#
Calculate the equivalent laminate properties
The following attributes are updated:
e1,e2,g12,`u12,nu21
- calc_lamination_parameters(self) LaminationParameters#
Calculate the lamination parameters.
The following attributes are calculated:
xiA,xiB,xiD,xiAts
- calc_transverse_shear_stiffness(self) void#
Update the transverse shear stiffnesses
A44,A45,A55Called at the end of
calc_constitutive_matrix(). The attributesA44,A45,A55are the transverse shear stiffnesses of the first-order shear deformation theory (FSDT) with the shear correction already applied, and no shear correction factor is applied to them by the elements.Conventions: \(\{\tau_{yz}, \tau_{xz}\}^T\), \(\{Q_y, Q_x\}^T\), \(A_{ts} = [[A_{44}, A_{45}], [A_{45}, A_{55}]]\), index 4 corresponds to \(yz\) and index 5 to \(xz\). The coordinate \(z\) is measured from the reference surface, with the plies running from \(z_1 = -h/2 + offset\) to \(z_{N+1} = +h/2 + offset\), and \(C_s^{(k)} = [[q_{44L}, q_{45L}], [q_{45L}, q_{55L}]]\), which is in general a full matrix.
The method is selected by the attribute
shear_correction:'rohwer'(default): equilibrium approach of Rohwer (1988). The transverse shear stresses are obtained from the equilibrium of two cylindrical bending states, with zero tractions at the bottom and top faces and continuity at every interface, \(\{\tau_{yz}, \tau_{xz}\}^T = f^{(k)}(z) \{Q_y, Q_x\}^T\). The 2x2 stiffness is obtained from the complementary energy:\[A_{ts} = \left[ \sum_k \int_{z_k}^{z_{k+1}} f^{(k)T} \left(C_s^{(k)}\right)^{-1} f^{(k)} dz \right]^{-1}\]The integrand is a polynomial of degree 4 in \(z\) within each ply, such that the 3-point Gauss-Legendre rule used per ply is exact. The method is valid for arbitrary anisotropic and unsymmetric laminates, and the result does not depend on
offset. The result is not invariant to a rotation of the reference frame, because the two cylindrical bending states are tied to the \(x\) and \(y\) axes. For this reason, the shell elements use it evaluated in the element coordinate system, seecalc_Ats_element().'vlachoutsis': the scalar factors \(k_{13}\), \(k_{23}\) of Vlachoutsis (1992) are applied to the constant-strain stiffness,A55 = k13*Abar55,A44 = k23*Abar44, and the ad-hocA45 = (k13 + k23)/2*Abar45, which cannot represent the coupling of angle-ply laminates withAbar45 = 0. The factors use \(C_{11}\) and \(C_{22}\) of each ply and the direction-wise neutral surfaces, being exact only for specially orthotropic plies.'constant': \(k = 5/6\), i.e.A44 = 5/6*Abar44,A45 = 5/6*Abar45,A55 = 5/6*Abar55.None: no correction,A44 = Abar44,A45 = Abar45,A55 = Abar55.
The following attributes are also updated:
Abar44,Abar45,Abar55(constant strain),Abarbar44,Abarbar45,Abarbar55(constant stress,nanif a ply has a singular \(C_s^{(k)}\)), and the ratiosscf_k13 = A55/Abar55andscf_k23 = A44/Abar44, which are informative only.References:
Rohwer, K. “Improved transverse shear stiffness for layered finite elements”, DFVLR-FB 88-32, 1988.
Vlachoutsis, S. “Shear correction factors for plates and shells”, Int. Journal for Numerical Methods in Engineering, Vol. 33, 1537-1552, 1992.
- Raises:
- ValueError
If
shear_correctionis not recognized; if a ply has a singular transverse shear constitutive matrix \(C_s^{(k)}\), e.g.g13 = 0org23 = 0('rohwer'and'vlachoutsis'); or if the ABD matrix of the laminate is singular ('rohwer').
- calc_transverse_shear_stress(self, double z, double Qy, double Qx) tuple#
Transverse shear stresses at a given height
Evaluates the equilibrium distribution of Rohwer (1988), in the material coordinate system:
\[\begin{split}\begin{Bmatrix} \tau_{yz} \\ \tau_{xz} \end{Bmatrix} = f^{(k)}(z) \begin{Bmatrix} Q_y \\ Q_x \end{Bmatrix}\end{split}\]where \(f^{(k)}(z)\) is quadratic within each ply, vanishes at the bottom and top faces and is continuous at the ply interfaces. This is the consistent way to recover \(\tau_{xz}\) and \(\tau_{yz}\), e.g. for failure criteria, since \(C_s \gamma\) is constant within each ply and non-zero at the free surfaces. For a homogeneous plate it gives the parabola \(\tau_{xz} = 3 Q_x/(2h) (1 - 4 \bar{z}^2/h^2)\), with \(\bar{z}\) measured from the mid-surface.
The distribution only depends on the in-plane stiffnesses of the plies and is the same for every
shear_correction. It is computed bycalc_transverse_shear_stiffness()whenshear_correctionis'rohwer', or on the first call otherwise, and it is reset bycalc_constitutive_matrix(), which must be called again if the plies are modified.- Parameters:
- zfloat
Height measured from the reference surface, within \([-h/2 + offset, +h/2 + offset]\). At a ply interface both plies give the same result.
- Qy, Qxfloat
Transverse shear forces per unit length, \(Q_y\) and \(Q_x\), e.g.
{Qy, Qx} = Ats @ {gamma_yz, gamma_xz}.
- Returns:
- tau_yz, tau_xztuple of float
Transverse shear stresses.
- Raises:
- ValueError
If
zis outside the laminate, if the laminate has no plies, or if the ABD matrix of the laminate is singular.
- e1#
e1: ‘double’
- e2#
e2: ‘double’
- force_balanced(self) void#
Force a balanced laminate
The attributes \(A_{16}\), \(A_{26}\), \(B_{16}\), \(B_{26}\) are set to zero to force a balanced laminate.
- force_orthotropic(self) void#
Force an orthotropic laminate
The attributes \(A_{16}\), \(A_{26}\), \(B_{16}\), \(B_{26}\), \(D_{16}\), \(D_{26}\) are set to zero to force an orthotropic laminate.
- force_symmetric(self) void#
Force a symmetric laminate
The \(B_{ij}\) terms of the constitutive matrix are set to zero.
- g12#
g12: ‘double’
- h#
h: ‘double’
- intrho#
intrho: ‘double’
- intrhoz#
intrhoz: ‘double’
- intrhoz2#
intrhoz2: ‘double’
- nu12#
nu12: ‘double’
- nu21#
nu21: ‘double’
- offset#
offset: ‘double’
- plies#
plies: list
- scf_k13#
scf_k13: ‘double’
- scf_k23#
scf_k23: ‘double’
- shear_correction#
shear_correction: object
- stack#
stack: list
- pyfe3d.shellprop.force_balanced_LP(LaminationParameters lp) LaminationParameters#
Force balanced lamination parameters
The lamination parameters \(\xi_{A2}\) and \(\xi_{A4}\) are set to null to force a balanced laminate.
- pyfe3d.shellprop.force_orthotropic_LP(LaminationParameters lp) LaminationParameters#
Force orthotropic lamination parameters
The lamination parameters \(\xi_{A2}\), \(\xi_{A4}\), \(\xi_{B2}\), \(\xi_{B4}\), \(\xi_{D2}\) and \(\xi_{D4}\) are set to null to force an orthotropic laminate. The \(\xi_{D2}\) and \(\xi_{D4}\) are related to the bend-twist coupling and become often very small for balanced laminates with a large amount of plies.
- pyfe3d.shellprop.force_symmetric_LP(LaminationParameters lp) LaminationParameters#
Force symmetric lamination parameters
The lamination parameters \(\xi_{Bi}\) are set to null to force a symmetric laminate.
- pyfe3d.shellprop.shellprop_from_LaminationParameters(double thickness, MatLamina mat, LaminationParameters lp) ShellProp#
Return a
ShellPropobject based in the thickness, material and lamination parameters- Parameters:
- thicknessfloat
The total thickness of the laminate
- mat
MatLaminaobject Material object
- lp
LaminationParametersobject The container class with all lamination parameters already defined
- Returns:
- lam
ShellProp laminate with the ABD and Ats matrices already calculated
- lam
Notes
Since the through-thickness distribution of the plies is not known from the lamination parameters, no shear correction can be computed. The transverse shear stiffnesses
A44,A45,A55are therefore equal to the constant-strainAbar44,Abar45,Abar55,shear_correctionisNone,scf_k13 = scf_k23 = 1and the constant-stressAbarbar44,Abarbar45,Abarbar55arenan. If a shear correction is desired,A44,A45,A55can be modified directly, and the elements will rotate them as a tensor.
- pyfe3d.shellprop.shellprop_from_lamination_parameters(double thickness, MatLamina matlamina, double xiA1, double xiA2, double xiA3, double xiA4, double xiB1, double xiB2, double xiB3, double xiB4, double xiD1, double xiD2, double xiD3, double xiD4, double xiAts1=0, double xiAts2=0) ShellProp#
Return a
ShellPropobject based in the thickness, material and lamination parametersNote that \(\xi_{Ats,1}\) and \(\xi_{Ats,2}\) are optional and usually equal to zero, becoming important only when the transverse shear modulus is different in the two directions, i.e. when \(G_{13} \ne G{23}\).
- Parameters:
- thicknessfloat
The total thickness of the plate
- matlamina
MatLaminaobject Material object
- xiAj, xiBj, xiDj, xiAtsjfloat
The 14 lamination parameters according to the first-order shear deformation theory: \(\xi_{A1} \cdots \xi_{A4}\), \(\xi_{B1} \cdots \xi_{B4}\), \(\xi_{D1} \cdots \xi_{D4}\), \(\xi_{Ats,1}\) and \(\xi_{Ats,2}\)
- Returns:
- lam
ShellProp Shell property with the ABD and Ats matrices already calculated. See
shellprop_from_LaminationParameters()for the transverse shear stiffnesses.
- lam