Module pytop.physics.shell

Functions

def ABD(E1: float | fenics_adjoint.types.function.Function, E2: float | fenics_adjoint.types.function.Function, G12: float | fenics_adjoint.types.function.Function, nu12: float | fenics_adjoint.types.function.Function, list_of_thickness: list[float | fenics_adjoint.types.function.Function], orientations: list[float | fenics_adjoint.types.function.Function], index: list[int]) ‑> Tuple[dolfin.fem.form.Form, dolfin.fem.form.Form, dolfin.fem.form.Form]

Return the stiffness matrix of a kirchhoff-love model of a laminate obtained by stacking n orthotropic laminae with possibly different thinknesses and orientations (see Reddy 1997, eqn 1.3.71). It assumes a plane-stress state.

Args

E1 : The Young modulus in the material direction 1.
E2 : The Young modulus in the material direction 2.
G12 : The in-plane shear modulus.
nu12
The in-plane Poisson ratio.
list_of_thickness
a list with length n with the thicknesses of the layers (from top to bottom).
orientations
a list with the n orientations (in radians) of the layers (from top to bottom).
index
index of active layer.

Returns

A
a symmetric 3x3 ufl matrix giving the membrane stiffness in Voigt notation.
B
a symmetric 3x3 ufl matrix giving the membrane/bending coupling stiffness in Voigt notation.
D
a symmetric 3x3 ufl matrix giving the bending stiffness in Voigt notation.
def ABD_tensor(E1: float | fenics_adjoint.types.function.Function, E2: float | fenics_adjoint.types.function.Function, G12: float | fenics_adjoint.types.function.Function, nu12: float | fenics_adjoint.types.function.Function, list_of_thickness: list[float | fenics_adjoint.types.function.Function], orientation_tensors: list[fenics_adjoint.types.function.Function | dolfin.fem.form.Form], index: list[int]) ‑> Tuple[dolfin.fem.form.Form, dolfin.fem.form.Form, dolfin.fem.form.Form]

Return the stiffness matrix of a kirchhoff-love model of a laminate obtained by stacking n orthotropic laminae with possibly different thinknesses and orientations (see Reddy 1997, eqn 1.3.71). It assumes a plane-stress state.

Args

E1 : The Young modulus in the material direction 1.
E2 : The Young modulus in the material direction 2.
G12 : The in-plane shear modulus.
nu12
The in-plane Poisson ratio.
list_of_thickness
a list with length n with the thicknesses of the layers (from top to bottom).
orientation_tensors
a list with the n orientations (in radians) of the layers (from top to bottom).
index
index of active layer.

Returns

A
a symmetric 3x3 ufl matrix giving the membrane stiffness in Voigt notation.
B
a symmetric 3x3 ufl matrix giving the membrane/bending coupling stiffness in Voigt notation.
D
a symmetric 3x3 ufl matrix giving the bending stiffness in Voigt notation.
def AD_matrix_neo_hooken(mu: float, nu: float, list_of_thickness: list, index: list) ‑> Tuple[dolfin.fem.form.Form, dolfin.fem.form.Form]

Return the stiffness matrix of an isotropic neo-hooken mechanical stiffness.

Args

mu
shear stiffness for neo-hooken.
nu
poisson's ratio.
list_of_thickness
list of thickness of each layer.
index
index of active layer.

Returns

A
Stiffness matrix of membrane.
D
Stiffness matrix of bending.
def Fs(G13: float | fenics_adjoint.types.function.Function, G23: float | fenics_adjoint.types.function.Function, list_of_thickness: list[float | fenics_adjoint.types.function.Function], orientations: list[float | fenics_adjoint.types.function.Function], index: list[int]) ‑> dolfin.fem.form.Form

Return the shear stiffness matrix of a Reissner-Midlin model of a laminate obtained by stacking n orthotropic laminae with possibly different thinknesses and orientations. (See Reddy 1997, eqn 3.4.18) It assumes a plane-stress state.

Args

G13
The transverse shear modulus between the material directions 1-3.
G23
The transverse shear modulus between the material directions 2-3.
list_of_thickness
a list with length n with the thicknesses of the layers (from top to bottom).
orientations
a list with the n orientations (in radians) of the layers (from top to bottom).
index
index of active layer.

Returns

F
a symmetric 2x2 ufl matrix giving the shear stiffness in Voigt notation.
def Fs_tensor(G13: float | fenics_adjoint.types.function.Function, G23: float | fenics_adjoint.types.function.Function, list_of_thickness: float | fenics_adjoint.types.function.Function, orientation_tensors: list[fenics_adjoint.types.function.Function | dolfin.fem.form.Form], index: list[int]) ‑> dolfin.fem.form.Form

Return the shear stiffness matrix of a Reissner-Midlin model of a laminate obtained by stacking n orthotropic laminae with possibly different thinknesses and orientations. (See Reddy 1997, eqn 3.4.18) It assumes a plane-stress state.

Args

G13
The transverse shear modulus between the material directions 1-3.
G23
The transverse shear modulus between the material directions 2-3.
list_of_thickness
a list with length n with the thicknesses of the layers (from top to bottom).
orientation_tensors
a list with the n orientations (in radians) of the layers (from top to bottom).

Returns

F
a symmetric 2x2 ufl matrix giving the shear stiffness in Voigt notation.
def NM_T(E1: float, E2: float, G12: float, nu12: float, list_of_thickness: list[float], orientations: list[float], index: list[int], DeltaT_0: float, DeltaT_1: float, alpha1: float, alpha2: float) ‑> Tuple[dolfin.fem.form.Form, dolfin.fem.form.Form]

Return the thermal stress and moment resultant of a Kirchhoff-Love model of a laminate obtained by stacking n orthotropic laminae with possibly different thinknesses and orientations. It assumes a plane-stress states and a temperature distribution in the from Delta(z) = DeltaT_0 + z * DeltaT_1

Args

E1
The Young modulus in the material direction 1.
E2
The Young modulus in the material direction 2.
G12
The in-plane shear modulus.
nu12
The in-plane Poisson ratio.
list_of_thickness
a list with length n with the thicknesses of the layers (from top to bottom).
orientations
a list with the n orientations (in radians) of the layers (from top to bottom).
alpha1
Expansion coefficient in the material direction 1.
alpha2
Expansion coefficient in the material direction 2.
DeltaT_0
Average temperature field.
DeltaT_1
Gradient of the temperature field.

Returns

N_T
a 3x1 ufl vector giving the membrane inelastic stress.
M_T
a 3x1 ufl vector giving the bending inelastic stress.
def NM_T_tensor(E1, E2, G12, nu12, hs, orientation_tensors, index, DeltaT_0, DeltaT_1=0.0, alpha1=1.0, alpha2=1.0)
def dielectric_general_stiffness(relative_permittivity: float, list_of_thickness: list, index: int, eps0=8.849999999999999e-12)

Return the general stiffness matrix of an isotropic dielectric mechanics. epsr: Relative permittivity. list_of_thickness: a list with length n with the thicknesses of the layers (from top to bottom). h: total thickness. index: index of active layer. eps0: permittivity.

Returns

A
general stiffness of membrane.
D
general stiffness of bending.
def nagdi_elements() ‑> ufl.finiteelement.mixedelement.MixedElement

nagdi_elements. Return finite elements for the non linear nagdi shell. Args:

Returns

elements
Mixed elements for nagdi shell.
def nagdi_strains(phi0: fenics_adjoint.types.function.Function, d0: fenics_adjoint.types.function.Function) ‑> Tuple[Callable, Callable, Callable]

nagdi_strains. Return strain measures for the nagdi-shell model.

Args

phi0
Reference configuration.
d0
Reference director.

Returns

e
Membrane strain measure.
k
Bending strain measure.
gamma
Shear strain measure.
def rotated_lamina_expansion_inplane(alpha11: float, alpha22: float, theta: float) ‑> dolfin.fem.form.Form

Return the in-plane expansion matrix of an orhtropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state. (See Reddy 1997, eqn 1.3.71)

Args

alpha11
Expansion coefficient in the material direction 1.
alpha22
Expansion coefficient in the material direction 2.
theta
The rotation angle from the material to the desired reference system.

Returns

alpha_theta
a 3x1 ufl vector giving the expansion matrix in voigt notation.
def rotated_lamina_expansion_inplane_tensor(alpha11: float, alpha22: float, orientation_tensors: fenics_adjoint.types.function.Function | dolfin.fem.form.Form) ‑> dolfin.fem.form.Form

Return the in-plane expansion matrix of an orhtropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state. (See Reddy 1997, eqn 1.3.71)

Args

alpha11
Expansion coefficient in the material direction 1.
alpha22
Expansion coefficient in the material direction 2.
orientation_tensors
a 2x2 ufl matrix giving the orientation matrix.

Returns

alpha_theta
a 3x1 ufl vector giving the expansion matrix in voigt notation.
def rotated_lamina_stiffness_inplane(E1: float, E2: float, G12: float, nu12: float, theta: float) ‑> dolfin.fem.form.Form

Return the in-plane stiffness matrix of an orhtropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state. (See Reddy 1997, eqn 1.3.71)

Args

E1
The Young modulus in the material direction 1.
E2
The Young modulus in the material direction 2.
G23
The in-plane shear modulus
nu12
The in-plane Poisson ratio
theta
The rotation angle from the material to the desired refence system

Returns

Q_theta
a 3x3 symmetric ufl matrix giving the stiffness matrix
def rotated_lamina_stiffness_inplane_tensor(E1: float | fenics_adjoint.types.function.Function, E2: float | fenics_adjoint.types.function.Function, G12: float | fenics_adjoint.types.function.Function, nu12: float | fenics_adjoint.types.function.Function, orientation_tensors: fenics_adjoint.types.function.Function | dolfin.fem.form.Form) ‑> dolfin.fem.form.Form

Return the in-plane stiffness matrix of an orhtotropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state. (See Reddy 1997, eqn 1.3.71)

Args

E1
The Young modulus in the material direction 1.
E2
The Young modulus in the material direction 2.
G23
The in-plane shear modulus
nu12
The in-plane Poisson ratio
orientation_tensors
a 2x2 ufl matrix giving the orientation matrix.

Returns

Q_voigt
a 3x3 symmetric ufl matrix giving the stiffness matrix
def rotated_lamina_stiffness_shear(G13: float, G23: float, theta: float, kappa=0.8333333333333334) ‑> dolfin.fem.form.Form

Return the shear stiffness matrix of an orhtropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state (see Reddy 1997, eqn 3.4.18).

Args

G12
The transverse shear modulus between the material directions 1-2.
G13
The transverse shear modulus between the material directions 1-3.
kappa
The shear correction factor.

Returns

Q_shear_theta
a 3x3 symmetric ufl matrix giving the stiffness matrix.
def rotated_lamina_stiffness_shear_tensor(G13: float, G23: float, tensor: fenics_adjoint.types.function.Function | dolfin.fem.form.Form, kappa=0.8333333333333334) ‑> dolfin.fem.form.Form

Return the shear stiffness matrix of an orhtropic layer in a reference rotated by an angle theta wrt to the material one. It assumes Voigt notation and plane stress state (see Reddy 1997, eqn 3.4.18).

Args

G12
The transverse shear modulus between the material directions 1-2.
G13
The transverse shear modulus between the material directions 1-3.
kappa
The shear correction factor.

Returns

Q_shear_theta
a 3x3 symmetric ufl matrix giving the stiffness matrix.
def z_coordinates(list_of_thickness: list) ‑> list

Return a list with the thickness coordinate of the top surface of each layer taking the midplane as z = 0.

Args

list_of_thickness
a list giving the thinckesses of each layer ordered from bottom (layer - 0) to top (layer n-1).

Returns

z
a list of coordinate of the top surface of each layer ordered from bottom (layer - 0) to top (layer n-1)