Composite Module (compmech.composite)#

The compmech.composite module includes functions used to calculate laminate properties based on input data of stacking sequence and lamina properties.

The most convenient usage is probably using the compmech.composite.laminate.read_stack() function:

from compmech.composite.laminate import read_stack

laminaprop = (E11, E22, nu12, G12, G13, G23)
plyt = ply_thickness
stack = [0, 90, +45, -45]
lam = read_stack(stack, plyt=plyt, laminaprop=laminaprop)

Where the laminate stiffness matrix, the often called ABD matrix, with shape=(6, 6), can be accessed using:

>>> lam.ABD

and when shear stiffnesses are required, the ABDE matrix, with shape=(8, 8):

>>> lam.ABDE

Composite Laminate Module (compmech.composite.laminate)#

class compmech.composite.laminate.Laminate[source]#

attribute

description

plies

list of plies

t

total thickness of the laminate

offset

offset at the normal direction

e1

equivalent laminate modulus in 1 direction

e2

equivalent laminate modulus in 2 direction

g12

equivalent laminate shear modulus in 12 direction

nu12

equivalent laminate Poisson ratio in 12 direction

nu21

equivalent laminate Poisson ratio in 21 direction

xiA

laminate parameters for extensional matrix A

xiB

laminate parameters for extension-bending matrix B

xiD

laminate parameters for bending matrix D

A

laminate extension matrix

B

laminate extension-bending matrix

D

laminate bending matrix

E

laminate transferse shear matrix

ABD

laminate ABD matrix

ABDE

laminate ABD matrix with transverse shear terms

Methods

calc_ABDE_from_lamination_parameters()

Use the ABDE matrix based on lamination parameters.

calc_constitutive_matrix()

Calculates the laminate constitutive matrix

calc_equivalent_modulus()

Calculates the equivalent laminate properties.

calc_lamination_parameters()

Calculate the lamination parameters.

force_balanced_LP()

Force balanced lamination parameters

force_orthotropic()

Force an orthotropic laminate

force_symmetric()

Force a symmetric laminate

force_symmetric_LP()

Force symmetric lamination parameters

rebuild

calc_ABDE_from_lamination_parameters()[source]#

Use the ABDE matrix based on lamination parameters.

Given the lamination parameters xiA, xiB, xiC and xiD, the ABD matrix is calculated.

calc_constitutive_matrix()[source]#

Calculates the laminate constitutive matrix

This is the commonly called ABD matrix with shape=(6, 6) when the classical laminated plate theory is used, or the ABDE matrix when the first-order shear deformation theory is used, containing the transverse shear terms.

calc_equivalent_modulus()[source]#

Calculates the equivalent laminate properties.

The following attributes are calculated:

e1, e2, g12, nu12, nu21

calc_lamination_parameters()[source]#

Calculate the lamination parameters.

The following attributes are calculated:

xiA, xiB, xiD, xiE

force_balanced_LP()[source]#

Force balanced lamination parameters

The lamination parameters \(\xi_{A2}\) and \(\xi_{A4}\) are set to null to force a balanced laminate.

force_orthotropic()[source]#

Force an orthotropic laminate

The terms \(A_{13}\), \(A_{23}\), \(A_{31}\), \(A_{32}\), \(B_{13}\), \(B_{23}\), \(B_{31}\), \(B_{32}\), \(D_{13}\), \(D_{23}\), \(D_{31}\), \(D_{32}\) are set to zero to force an orthotropic laminate.

force_symmetric()[source]#

Force a symmetric laminate

The \(B\) terms of the constitutive matrix are set to zero.

force_symmetric_LP()[source]#

Force symmetric lamination parameters

The lamination parameters \(\xi_{Bi}\) are set to null to force a symmetric laminate.

compmech.composite.laminate.read_lamination_parameters(thickness, laminaprop, xiA1, xiA2, xiA3, xiA4, xiB1, xiB2, xiB3, xiB4, xiD1, xiD2, xiD3, xiD4, xiE1, xiE2, xiE3, xiE4)[source]#

Calculates a laminate based on the lamination parameters.

The lamination parameters: \(\xi_{A1} \cdots \xi_{A4}\), \(\xi_{B1} \cdots \xi_{B4}\), \(\xi_{C1} \cdots \xi_{C4}\), \(\xi_{D1} \cdots \xi_{D4}\), \(\xi_{E1} \cdots \xi_{E4}\)

are used to calculate the laminate constitutive matrix.

Parameters:
thicknessfloat

The total thickness of the laminate

laminaproptuple

The laminaprop tuple used to define the laminate material.

xiA1 to xiD4float

The 16 lamination parameters used to define the laminate.

Returns:
lamLaminate

laminate with the ABD and ABDE matrices already calculated

compmech.composite.laminate.read_stack(stack, plyt=None, laminaprop=None, plyts=[], laminaprops=[], offset=0.0)[source]#

Read a laminate stacking sequence data.

An Laminate object is returned based on the inputs given.

Parameters:
stacklist

Angles of the stacking sequence in degrees.

plytfloat, optional

When all plies have the same thickness, plyt can be supplied.

laminaproptuple, optional

When all plies have the same material properties, laminaprop can be supplied.

plytslist, optional

A list of floats with the thickness of each ply.

laminapropslist, optional

A list of tuples with a laminaprop for each ply.

offsetfloat, optional

Offset along the normal axis about the mid-surface, which influences the laminate properties.

Notes

plyt or plyts must be supplied laminaprop or laminaprops must be supplied

For orthotropic plies, the laminaprop should be:

laminaprop = (E11, E22, nu12, G12, G13, G23)

For isotropic pliey, the laminaprop should be:

laminaprop = (E, E, nu)

Composite Lamina Module (compmech.composite.lamina)#

class compmech.composite.lamina.Lamina[source]#

attribute

description

plyid

id of the composite lamina

matobj

a pointer to a MatLamina object

t

ply thickness

theta

ply angle in degrees

L

transformation matrix for displacements to laminate csys

R

transformation matrix for stresses to laminate csys

T

transformation matrix for stresses to lamina csys

QL

constitutive matrix for plane-stress in laminate csys

laminates

laminates that contain this lamina

Methods

rebuild

Composite Matlamina Module (compmech.composite.matlamina)#

class compmech.composite.matlamina.MatLamina[source]#

Orthotropic material lamina

attributes

description

e1

Young Modulus in direction 1

e2

Young Modulus in direction 2

g12

in-plane shear modulus

g13

transverse shear modulus for plane 1-Z

g23

transverse shear modulus for plane 2-Z

nu12

Poisson’s ratio 12

nu13

Poisson’s ratio 13

nu23

Poisson’s ratio 23

nu21

Poisson’s ratio 21: use formula nu12/e1 = nu21/e2

nu31

Poisson’s ratio 31: use formula nu31/e3 = nu13/e1

nu32

Poisson’s ratio 32: use formula nu23/e2 = nu32/e3

rho

especific mass (mass / volume)

a1

thermal expansion coeffiecient in direction 1

a2

thermal expansion coeffiecient in direction 2

a3

thermal expansion coeffiecient in direction 3

tref

reference temperature

st1,st2

allowable tensile stresses for directions 1 and 2

sc1,sc2

allowable compressive stresses for directions 1 and 2

ss12

allowable in-plane stress for shear

strn

allowable strain for direction 1

q11

lamina constitutive constant 11

q12

lamina constitutive constant 12

q13

lamina constitutive constant 13

q21

lamina constitutive constant 21

q22

lamina constitutive constant 22

q23

lamina constitutive constant 23

q31

lamina constitutive constant 31

q32

lamina constitutive constant 32

q33

lamina constitutive constant 33

q44

lamina constitutive constant 44

q55

lamina constitutive constant 55

q66

lamina constitutive constant 66

u

matrix with lamina invariants

c

matrix with lamina stiffness coefficients

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\).

Methods

read_inputs

rebuild

compmech.composite.matlamina.read_laminaprop(laminaprop=None)[source]#

Returns a MatLamina object based on an input laminaprop tuple

Parameters:
laminaproplist or tuple

Tuple containing the folliwing entries:

(e1, e2, nu12, g12, g13, g23, e3, nu13, nu23)

for othotropic materials the user can only supply:

(e1, e2, nu12, g12, g13, g23)

for isotropic materials the user can only supply:

(e1, e2, nu12)

symbol

value

e1

Young Module in direction 1

e2

Young Module in direction 2

nu12

12 Poisson’s ratio

g12

12 Shear Modulus

g13

13 Shear Modulus

g23

13 Shear Modulus

e3

Young Module in direction 3

nu13

13 Poisson’s ratio

nu23

23 Poisson’s ratio

Returns:
matlamMatLamina

A MatLamina object.