Module pytop.physics.elasticity
Functions
def elastic_2d_plane_stress(u, E, nu)-
Compute the elastic stress tensor.
Args: (Function, float, float) u: displacement field. E: Young's modulus. nu: Poisson's ratio.
Returns: (Function) stress tensor.
def linear_2D_elasticity_bilinear_form(trial_function:, test_function: , E: float, nu: float, weight: Callable = None) ‑> dolfin.fem.form.Form -
Bilinear form of Linear 2D elasticity.
Args: (TrialFunction, TestFunction, float, float, Callable) trial_function: trial function. test_function: test function. E: Young's modulus. nu: Poisson's ratio. weight: weight function.
Returns: (Form) bilinear form.
def linear_2D_orthotropic_elasticity_bilinear_form(trial_function:, test_function: , E1: float, E2: float, G12: float, nu12: float, theta: float, weight: Callable = None) ‑> dolfin.fem.form.Form -
Bilinear form of Linear 2D orthotropic elasticity.
Args: (TrialFunction, TestFunction, float, float, float, float, float, Callable) trial_function: trial function. test_function: test function. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson's ratio. theta: rotation angle from the material to the desired reference system. weight: weight function.
Returns: (Form) bilinear form.
def linear_2D_orthotropic_elasticity_bilinear_form_tensor(trial_function:, test_function: , E1: float, E2: float, G12: float, nu12: float, orient_tensor_2: fenics_adjoint.types.function.Function, orient_tensor_4: fenics_adjoint.types.function.Function, weight: Callable = None) ‑> dolfin.fem.form.Form -
Bilinear form of Linear 2D orthotropic elasticity.
Args: (TrialFunction, TestFunction, float, float, float, float, Function, Function, Callable) trial_function: trial function. test_function: test function. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson's ratio. orient_tensor_2: orientation tensor of order 2. orient_tensor_4: orientation tensor of order 4. weight: weight function.
Returns: (Form) bilinear form.
def linear_2D_orthotropic_elasticity_bilinear_form_vector(trial_function:, test_function: , E1: float, E2: float, G12: float, nu12: float, orientation_vector: fenics_adjoint.types.function.Function, weight: Callable = None) ‑> dolfin.fem.form.Form -
Bilinear form of Linear 2D orthotropic elasticity.
Args: (TrialFunction, TestFunction, float, float, float, float, Function, Callable) trial_function: trial function. test_function: test function. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson's ratio. orientation_vector: orientation vector of the layer. weight: weight function.
Returns: (Form) bilinear form.
def ortho_elast_2D_stiffness_tensor_from_orientation_tensor(orient_tensor_2: fenics_adjoint.types.function.Function, orient_tensor_4: fenics_adjoint.types.function.Function, E1: float, E2: float, G12: float, nu12: float) ‑> fenics_adjoint.types.function.Function-
Compute the stiffness tensor of an orthotropic material from the orientation tensor.
Args: (Function, Function, float, float, float, float) orient_tensor_2: orientation tensor of order 2. orient_tensor_4: orientation tensor of order 4. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson ratio.
Returns: (Function) stiffness tensor.
def orthotropic_2d_plane_stress(u, E1, E2, G12, nu12, theta)-
Compute the orthotropic stress tensor.
Args: (Function, float, float, float, float) u: displacement field. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson ratio. theta: rotation angle from the material to the desired reference system.
Returns: (Function) stress tensor.
def orthotropic_2d_plane_stress_tensor(u, E1, E2, G12, nu12, orient_tensor_2, orient_tensor_4)-
Compute the orthotropic stress tensor.
Args: (Function, float, float, float, float, Function, Function) u: displacement field. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson ratio. orient_tensor_2: orientation tensor of order 2. orient_tensor_4: orientation tensor of order 4.
Returns: (Function) stress tensor.
def orthotropic_2d_plane_stress_vector(u, E1, E2, G12, nu12, orientation_vector)-
Compute the orthotropic stress tensor.
Args: (Function, float, float, float, float) u: displacement field. E1: Young's modulus in the material direction 1. E2: Young's modulus in the material direction 2. G12: in-plane shear modulus. nu12: in-plane Poisson ratio. orientation_vector: orientation vector of the layer.
Returns: (Function) stress tensor.
def rotated_lamina_stiffness_inplane(E1, E2, G12, nu12, theta)-
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_vector(E1, E2, G12, nu12, orientation_vector)-
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.
orientation_vector- The orientation vector of the layer.
Returns
Q_theta- a 3x3 symmetric ufl matrix giving the stiffness matrix.
def rotated_lamina_stiffness_shear(G13, G23, theta, kappa=0.8333333333333334)-
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 strain(u)-
Compute the strain tensor.
Args: (Function) u: displacement field.
Returns: (Function) strain tensor.
def strain_from_voigt(e_voigt)-
Inverse operation of strain_to_voigt.
Args
sigma_voigt- UFL form with shape (3,1) corresponding to the strain
pseudo-vector in Voigt format
Returns
a symmetric stress tensor, typically UFL form with shape (2,2)
def strain_to_voigt(e)-
Returns the pseudo-vector in the Voigt notation associate to a 2x2 symmetric strain tensor, according to the following rule (see e.g. https://en.wikipedia.org/wiki/Voigt_notation), [ e = \begin{bmatrix} e_{00} & e_{01}\ e_{01} & e_{11} \end{bmatrix}\quad\to\quad e_\mathrm{voigt}= \begin{bmatrix} e_{00} & e_{11}& 2e_{01} \end{bmatrix} ]
Args
e- a symmetric 2x2 strain tensor, typically UFL form with shape (2,2)
Returns
a UFL form with shape (3,1) corresponding to the input tensor in Voigt notation.
def stress_from_voigt(sigma_voigt)-
Inverse operation of stress_to_voigt.
Args
sigma_voigt- UFL form with shape (3,1) corresponding to the stress
pseudo-vector in Voigt format.
Returns
a symmetric stress tensor, typically UFL form with shape (2,2)
def stress_to_voigt(sigma)-
Returns the pseudo-vector in the Voigt notation associate to a 2x2 symmetric stress tensor, according to the following rule (see e.g. https://en.wikipedia.org/wiki/Voigt_notation), [ \sigma = \begin{bmatrix} \sigma_{00} & \sigma_{01}\ \sigma_{01} & \sigma_{11} \end{bmatrix}\quad\to\quad \sigma_\mathrm{voigt}= \begin{bmatrix} \sigma_{00} & \sigma_{11}& \sigma_{01} \end{bmatrix} ]
Args
sigma- a symmetric 2x2 stress tensor, typically UFL form with shape
(2,2).
Returns
a UFL form with shape (3,1) corresponding to the input tensor in Voigt notation.
def z_coordinates(hs)-
Return a list with the thickness coordinate of the top surface of each layer taking the midplane as z = 0.
Args
hs- 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)