Shell property module (pyfe3d.shellprop
)#
Highly based on the composites. module.
- class pyfe3d.shellprop.GradABDE#
Container to store the gradients of the ABDE matrices with respect to the lamination parameters
- Attributes:
- gradAij, gradBij, gradDij, gradEijtuple of 2D np.array objects
The shapes of these gradient matrices are:
gradAij: (6, 5) gradBij: (6, 5) gradDij: (6, 5) gradEij: (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
MatLamina
object Material object
- lp
LaminationParameters
object The container class with all lamination parameters already defined
- Returns:
- None
The attributes of the object are updated.
- gradAij#
gradAij: ‘double[:, ::1]’
- gradBij#
gradBij: ‘double[:, ::1]’
- gradDij#
gradDij: ‘double[:, ::1]’
- gradEij#
gradEij: ‘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)
- xiE1, xiE2float
Lamination parameters \(\xi_{Ei}\) (transverse shear)
- xiA1#
xiA1: ‘double’
- xiA2#
xiA2: ‘double’
- xiA3#
xiA3: ‘double’
- xiA4#
xiA4: ‘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’
- xiE1#
xiE1: ‘double’
- xiE2#
xiE2: ‘double’
- xiE3#
xiE3: ‘double’
- xiE4#
xiE4: ‘double’
- class pyfe3d.shellprop.MatLamina#
Orthotropic material lamina
- Attributes:
e1
floate1: ‘double’
e2
floate2: ‘double’
g12
floatg12: ‘double’
g13
floatg13: ‘double’
g23
floatg23: ‘double’
nu12
nu12: ‘double’
nu13
nu13: ‘double’
nu23
nu23: ‘double’
nu21
nu21: ‘double’
nu31
nu31: ‘double’
nu32
nu32: ‘double’
rho
rho: ‘double’
a1
a1: ‘double’
a2
a2: ‘double’
a3
a3: ‘double’
tref
tref: ‘double’
- st1,st2
allowable tensile stresses for directions 1 and 2
- sc1,sc2
allowable compressive stresses for directions 1 and 2
ss12
ss12: ‘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’
- 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
MatLamina
object 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,u7
attributes.
- 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:
plies
listplies: list
stack
liststack: list
h
floath: ‘double’
offset
floatoffset: ‘double’
- e1, e2float
Equivalent laminate moduli in directions 1 and 2
g12
floatg12: ‘double’
- nu12, nu21float
Equivalent laminate Poisson ratios in the 12 and 21 directions
- scf_k13, scf_k23float
Shear correction factor in the 13 and 23 directions
intrho
floatintrho: ‘double’
intrhoz
floatintrhoz: ‘double’
intrhoz2
floatintrhoz2: ‘double’
Methods
calc_constitutive_matrix
(self)Calculate the laminate constitutive terms
Calculate the equivalent laminate properties
Calculate the lamination parameters.
calc_scf
(self)Update shear correction factors of the
ShellProp
objectforce_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’
- A66#
A66: ‘double’
- 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’
- E44#
E44: ‘double’
- E45#
E45: ‘double’
- E55#
E55: ‘double’
- calc_constitutive_matrix(self) void #
Calculate the laminate constitutive terms
This is the commonly called
ABD
matrix withshape=(6, 6)
when the classical laminated plate theory is used, or theABDE
matrix when the first-order shear deformation theory is used, containing the transverse shear terms.
- 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
,xiE
- calc_scf(self) void #
Update shear correction factors of the
ShellProp
objectReference:
Vlachoutsis, S. “Shear correction factors for plates and shells”, Int. Journal for Numerical Methods in Engineering, Vol. 33, 1537-1552, 1992.
http://onlinelibrary.wiley.com/doi/10.1002/nme.1620330712/full
Using “one shear correction factor” (see reference), assuming:
constant G13, G23, E1, E2, nu12, nu21 within each ply
g1 calculated using z at the middle of each ply
zn1 =
ShellProp
offset
attribute
- Returns:
- k13, k23tuple
Shear correction factors. Also updates attributes:
scf_k13
andscf_k23
.
- 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’
- 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
ShellProp
object based in the thickness, material and lamination parameters- Parameters:
- thicknessfloat
The total thickness of the laminate
- mat
MatLamina
object Material object
- lp
LaminationParameters
object The container class with all lamination parameters already defined
- Returns:
- lam
ShellProp
laminate with the ABD and ABDE matrices already calculated
- lam
- 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 xiE1=0, double xiE2=0) ShellProp #
Return a
ShellProp
object based in the thickness, material and lamination parametersNote that \(\xi_{E1}\) and \(\xi_{E2}\) 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
MatLamina
object Material object
- xiAj, xiBj, xiDj, xiEjfloat
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_{E1}\) and \(\xi_{E2}\)
- Returns:
- lam
ShellProp
Shell property with the ABD and ABDE matrices already calculated
- lam