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)