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)