elastodynamicsx.pde.materials package

Module contents

The materials module contains classes for a representation of a PDE of the kind:

M*a + C*v + K(u) = 0

i.e. the lhs of a PDE such as defined in the PDE class. An instance represents a single (possibly arbitrarily space-dependent) material.

The preferred way to call a material law is using the material function:
from elastodynamicsx.pde import material
mat = material( (function_space, cell_tags, marker), type_, *args, **kwargs)
elastodynamicsx.pde.materials.material(functionspace_tags_marker, type_, *args, **kwargs) Material[source]

Builder method that instanciates the desired material type

Parameters:
  • functionspace_tags_marker

    Available possibilities are:

    • (function_space, cell_tags, marker): meaning application

      of the material in the cells whose tag correspond to marker

    • function_space: in this case cell_tags=None

      and marker=None, meaning application of the material in the entire domain

  • type

    Available options are:

    • linear (scalar): ‘scalar’

    • linear: ‘isotropic’, ‘cubic’, ‘hexagonal’, ‘trigonal’, ‘tetragonal’,

      ’orthotropic’, ‘monoclinic’, ‘triclinic’

    • nonlinear, hyperelastic: ‘murnaghan’, ‘saintvenant-kirchhoff’, ‘mooney-rivlin-incomp’

  • *args – Passed to the required material

Keyword Arguments:

**kwargs – Passed to the required material

Returns:

An instance of the desired material

Example

# ###
# Constant / variable material parameter
# ###
rho = 2.8
rho = fem.Constant(function_space.mesh, default_scalar_type(2.8))
rho = fem.Function(scalar_function_space); rho.interpolate(lambda x: 2.8 * np.ones(len(x)))

# ###
# Subdomain(s) or entire domain?
# ###

# restricted to subdomain number 1
aluminum = material((function_space, cell_tags, 1), 'isotropic',
                     rho=2.8, lambda_=58, mu=26)

# restricted to subdomains number 1, 2, 5
aluminum = material((function_space, cell_tags, (1,2,5)), 'isotropic',
                     rho=2.8, lambda_=58, mu=26)

# entire domain
aluminum = material( function_space, 'isotropic',
                     rho=2.8, lambda_=58, mu=26)

# ###
# Available laws
# ###

# Linear elasticity
mat = material( function_space, 'isotropic'  , rho, C12, C44)
mat = material( function_space, 'cubic'      , rho, C11, C12, C44)
mat = material( function_space, 'hexagonal'  , rho, C11, C13, C33, C44, C66)
mat = material( function_space, 'trigonal'   , rho, C11, C12, C13, C14, C25,
                                                    C33, C44)
mat = material( function_space, 'tetragonal' , rho, C11, C12, C13, C16, C33, C44, C66)
mat = material( function_space, 'orthotropic', rho, C11, C12, C13, C22, C23, C33, C44,
                                                    C55, C66)
mat = material( function_space, 'monoclinic' , rho, C11, C12, C13, C15, C22, C23, C25,
                                                    C33, C35, C44, C46, C55, C66)
mat = material( function_space, 'triclinic'  , rho, C11, C12, C13, C14, C15, C16, C22,
                                                    C23, C24, C25, C26, C33, C34, C35,
                                                    C36, C44, C45, C46, C55, C56, C66)

# Hyperelasticity
mat = material( function_space, 'saintvenant-kirchhoff', rho, C12, C44)
mat = material( function_space, 'murnaghan', rho, C12, C44, l, m, n)
mat = material( function_space, 'mooney-rivlin-incomp', rho, C1, C2)

# Arbitrary
mat = material( function_space,
                'custom',
                M_fn=lambda u,v: ufl.inner(u,v) * ufl.dx,
                K_fn=lambda u,v: ... * ufl.dx)
elastodynamicsx.pde.materials.damping(type_: str, *args) Damping[source]

Builder method that instanciates the desired damping law type

Parameters:
  • type

    Available options are:

    • ’none’

    • ’rayleigh’

  • *args – Passed to the required damping law

Returns:

An instance of the desired damping law

Example

from elastodynamicsx.pde import damping, material

dmp = damping('none')
dmp = damping('rayleigh', eta_m, eta_k)

mat = material(V, 'isotropic', rho, lambda_, mu, damping=dmp)
class elastodynamicsx.pde.materials.Material(functionspace_tags_marker, rho, is_linear, **kwargs)[source]

Bases: object

Base class for a representation of a material law.

Parameters:
  • functionspace_tags_marker

    Available possibilities are:

    • (function_space, cell_tags, marker): meaning application of

      the material in the cells whose tag correspond to marker

    • function_space: in this case cell_tags=None

      and marker=None, meaning application of the material in the entire domain

  • rho – Density

  • is_linear – True for linear, False for hyperelastic

Keyword Arguments:

metadata – (default=None) The metadata used by the ufl measures (dx, dS). If set to None, uses the PDECONFIG.default_metadata

labels: List[str]
property is_linear: bool
M_fn(u, v)[source]

(bilinear) mass form function

C_fn(u, v)[source]

(bilinear) damping form function

K_fn(u, v)[source]

(bilinear) Stiffness form function

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K0_fn_CG(u, v)[source]

K0 stiffness form function for a Continuous Galerkin formulation (waveguides)

K1_fn_CG(u, v)[source]

K1 stiffness form function for a Continuous Galerkin formulation (waveguides)

K2_fn_CG(u, v)[source]

K2 stiffness form function for a Continuous Galerkin formulation (waveguides)

K_fn_DG(u, v)[source]

Stiffness form function for a Disontinuous Galerkin formulation

DG_numerical_flux(u, v)[source]

Numerical flux for a Disontinuous Galerkin formulation

property rho

Density

class elastodynamicsx.pde.materials.ElasticMaterial(functionspace_tags_marker, rho, C_21: List, **kwargs)[source]

Bases: Material

Base class for linear elastic materials, supporting full anisotropy

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C_21 – list of the 21 independent elastic constants

Keyword Arguments:

damping – (default=NoDamping()) An instance of a subclass of Damping

eq_IJ: ndarray = array([[ 0,  1,  2,  3,  4,  5],        [ 1,  6,  7,  8,  9, 10],        [ 2,  7, 11, 12, 13, 14],        [ 3,  8, 12, 15, 16, 17],        [ 4,  9, 13, 16, 18, 19],        [ 5, 10, 14, 17, 19, 20]])
ijkm: ndarray = array([[0, 0, 0, 0],        [0, 0, 1, 1],        [0, 0, 2, 2],        [0, 0, 1, 2],        [0, 0, 0, 2],        [0, 0, 0, 1],        [1, 1, 1, 1],        [1, 1, 2, 2],        [1, 1, 1, 2],        [1, 1, 0, 2],        [1, 1, 0, 1],        [2, 2, 2, 2],        [2, 2, 1, 2],        [2, 2, 0, 2],        [2, 2, 0, 1],        [1, 2, 1, 2],        [1, 2, 0, 2],        [1, 2, 0, 1],        [0, 2, 0, 2],        [0, 2, 0, 1],        [0, 1, 0, 1]])
static Cij(C_21: List, i: int, j: int)[source]

Returns the \(C_{ij}\) coefficient from the C_21 list

i, j = 0..5

static Cijkm(C_21: List, i: int, j: int, k: int, m: int)[source]

Returns the \(C_{ijkm}\) coefficient from the C_21 list

i, j, k, m = 0..2

property epsilon

Strain function (matrix representation) \(\boldsymbol{\epsilon}(\mathbf{u})\)

property epsilonVoigt

Strain function (Voigt representation) \(\boldsymbol{\epsilon}(\mathbf{u})\)

sigma(u)[source]

Stress function (matrix representation) \(\boldsymbol{\sigma}(\mathbf{u})\)

sigmaVoigt(u)[source]

Stress function (Voigt representation) \(\boldsymbol{\sigma}(\mathbf{u})\)

sigma_n(u, n)[source]

Stress in the ‘n’ direction \(\boldsymbol{\sigma}(\mathbf{u}) \cdot \mathbf{n}\)

diamond(v1, v2)[source]

Returns the diamond product of vectors v1 and v2.

Returns:

\(\mathbf{d}\), such as \(d_{jk} = C_{ijkm} v_{1,i} v_{2,m}\)

C_fn(u, v)[source]

Damping form function

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K0_fn_CG(u, v)[source]

K0 stiffness form function for a Continuous Galerkin formulation (waveguides)

K1_fn_CG(u, v)[source]

K1 stiffness form function for a Continuous Galerkin formulation (waveguides)

K2_fn_CG(u, v)[source]

K2 stiffness form function for a Continuous Galerkin formulation (waveguides)

K_fn_DG(u, v)[source]

Stiffness form function for a Discontinuous Galerkin formulation

select_DG_numerical_flux(variant: str = 'SIPG') Callable[source]
property DG_numerical_flux: Callable

Numerical flux for a Disontinuous Galerkin formulation

DG_SIPG_regularization_parameter() Constant[source]

Regularization parameter for the Symmetric Interior Penalty Galerkin methods (SIPG)

DG_numerical_flux_SIPG(u, v)[source]
DG_numerical_flux_NIPG(u, v)[source]

WARNING, instable for elasticity

DG_numerical_flux_IIPG(u, v)[source]

WARNING, instable for elasticity

property P_modulus

P-wave modulus

Returns:

  • \(\rho c_{max}^2\) where \(c_{max}\) is the highest wave velocity

  • \(\lambda + 2 \mu\) for isotropic materials

  • \(\mu\) for scalar materials

Cij_xyz_frame(i, j)[source]

Cij stiffness constant in the (xyz) coordinate frame

Cijkm_xyz_frame(i, j, k, m)[source]

Cijkm stiffness constant in the (xyz) coordinate frame

Cij_mat_frame(i, j)[source]

Cij stiffness constant in the material coordinate frame

Cijkm_mat_frame(i, j, k, m)[source]

Cijkm stiffness constant in the material coordinate frame

property C11

C11 stiffness constant in the material coordinate frame

property C12

C12 stiffness constant in the material coordinate frame

property C13

C13 stiffness constant in the material coordinate frame

property C14

C14 stiffness constant in the material coordinate frame

property C15

C15 stiffness constant in the material coordinate frame

property C16

C16 stiffness constant in the material coordinate frame

property C22

C22 stiffness constant in the material coordinate frame

property C23

C23 stiffness constant in the material coordinate frame

property C24

C24 stiffness constant in the material coordinate frame

property C25

C25 stiffness constant in the material coordinate frame

property C26

C26 stiffness constant in the material coordinate frame

property C33

C33 stiffness constant in the material coordinate frame

property C34

C34 stiffness constant in the material coordinate frame

property C35

C35 stiffness constant in the material coordinate frame

property C36

C36 stiffness constant in the material coordinate frame

property C44

C44 stiffness constant in the material coordinate frame

property C45

C45 stiffness constant in the material coordinate frame

property C46

C46 stiffness constant in the material coordinate frame

property C55

C55 stiffness constant in the material coordinate frame

property C56

C56 stiffness constant in the material coordinate frame

property C66

C66 stiffness constant in the material coordinate frame

class elastodynamicsx.pde.materials.HyperelasticMaterial(functionspace_tags_marker, rho, **kwargs)[source]

Bases: Material

Base class for hyperelastic materials

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • sigma – Stress function

Keyword Arguments:

**kwargs – see Material

P(u)[source]

First Piola-Kirchhoff stress

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K_fn_DG(u, v)[source]

(Not implemented) Stiffness form function for a Discontinuous Galerkin formulation

DG_numerical_flux(u, v)[source]

(Not implemented) Numerical flux for a Disontinuous Galerkin formulation

Submodules

elastodynamicsx.pde.materials.material module

class elastodynamicsx.pde.materials.material.Material(functionspace_tags_marker, rho, is_linear, **kwargs)[source]

Bases: object

Base class for a representation of a material law.

Parameters:
  • functionspace_tags_marker

    Available possibilities are:

    • (function_space, cell_tags, marker): meaning application of

      the material in the cells whose tag correspond to marker

    • function_space: in this case cell_tags=None

      and marker=None, meaning application of the material in the entire domain

  • rho – Density

  • is_linear – True for linear, False for hyperelastic

Keyword Arguments:

metadata – (default=None) The metadata used by the ufl measures (dx, dS). If set to None, uses the PDECONFIG.default_metadata

labels: List[str]
property is_linear: bool
M_fn(u, v)[source]

(bilinear) mass form function

C_fn(u, v)[source]

(bilinear) damping form function

K_fn(u, v)[source]

(bilinear) Stiffness form function

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K0_fn_CG(u, v)[source]

K0 stiffness form function for a Continuous Galerkin formulation (waveguides)

K1_fn_CG(u, v)[source]

K1 stiffness form function for a Continuous Galerkin formulation (waveguides)

K2_fn_CG(u, v)[source]

K2 stiffness form function for a Continuous Galerkin formulation (waveguides)

K_fn_DG(u, v)[source]

Stiffness form function for a Disontinuous Galerkin formulation

DG_numerical_flux(u, v)[source]

Numerical flux for a Disontinuous Galerkin formulation

property rho

Density

elastodynamicsx.pde.materials.elasticmaterial module

class elastodynamicsx.pde.materials.elasticmaterial.ElasticMaterial(functionspace_tags_marker, rho, C_21: List, **kwargs)[source]

Bases: Material

Base class for linear elastic materials, supporting full anisotropy

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C_21 – list of the 21 independent elastic constants

Keyword Arguments:

damping – (default=NoDamping()) An instance of a subclass of Damping

eq_IJ: ndarray = array([[ 0,  1,  2,  3,  4,  5],        [ 1,  6,  7,  8,  9, 10],        [ 2,  7, 11, 12, 13, 14],        [ 3,  8, 12, 15, 16, 17],        [ 4,  9, 13, 16, 18, 19],        [ 5, 10, 14, 17, 19, 20]])
ijkm: ndarray = array([[0, 0, 0, 0],        [0, 0, 1, 1],        [0, 0, 2, 2],        [0, 0, 1, 2],        [0, 0, 0, 2],        [0, 0, 0, 1],        [1, 1, 1, 1],        [1, 1, 2, 2],        [1, 1, 1, 2],        [1, 1, 0, 2],        [1, 1, 0, 1],        [2, 2, 2, 2],        [2, 2, 1, 2],        [2, 2, 0, 2],        [2, 2, 0, 1],        [1, 2, 1, 2],        [1, 2, 0, 2],        [1, 2, 0, 1],        [0, 2, 0, 2],        [0, 2, 0, 1],        [0, 1, 0, 1]])
static Cij(C_21: List, i: int, j: int)[source]

Returns the \(C_{ij}\) coefficient from the C_21 list

i, j = 0..5

static Cijkm(C_21: List, i: int, j: int, k: int, m: int)[source]

Returns the \(C_{ijkm}\) coefficient from the C_21 list

i, j, k, m = 0..2

property epsilon

Strain function (matrix representation) \(\boldsymbol{\epsilon}(\mathbf{u})\)

property epsilonVoigt

Strain function (Voigt representation) \(\boldsymbol{\epsilon}(\mathbf{u})\)

sigma(u)[source]

Stress function (matrix representation) \(\boldsymbol{\sigma}(\mathbf{u})\)

sigmaVoigt(u)[source]

Stress function (Voigt representation) \(\boldsymbol{\sigma}(\mathbf{u})\)

sigma_n(u, n)[source]

Stress in the ‘n’ direction \(\boldsymbol{\sigma}(\mathbf{u}) \cdot \mathbf{n}\)

diamond(v1, v2)[source]

Returns the diamond product of vectors v1 and v2.

Returns:

\(\mathbf{d}\), such as \(d_{jk} = C_{ijkm} v_{1,i} v_{2,m}\)

C_fn(u, v)[source]

Damping form function

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K0_fn_CG(u, v)[source]

K0 stiffness form function for a Continuous Galerkin formulation (waveguides)

K1_fn_CG(u, v)[source]

K1 stiffness form function for a Continuous Galerkin formulation (waveguides)

K2_fn_CG(u, v)[source]

K2 stiffness form function for a Continuous Galerkin formulation (waveguides)

K_fn_DG(u, v)[source]

Stiffness form function for a Discontinuous Galerkin formulation

select_DG_numerical_flux(variant: str = 'SIPG') Callable[source]
property DG_numerical_flux: Callable

Numerical flux for a Disontinuous Galerkin formulation

DG_SIPG_regularization_parameter() Constant[source]

Regularization parameter for the Symmetric Interior Penalty Galerkin methods (SIPG)

DG_numerical_flux_SIPG(u, v)[source]
DG_numerical_flux_NIPG(u, v)[source]

WARNING, instable for elasticity

DG_numerical_flux_IIPG(u, v)[source]

WARNING, instable for elasticity

property P_modulus

P-wave modulus

Returns:

  • \(\rho c_{max}^2\) where \(c_{max}\) is the highest wave velocity

  • \(\lambda + 2 \mu\) for isotropic materials

  • \(\mu\) for scalar materials

Cij_xyz_frame(i, j)[source]

Cij stiffness constant in the (xyz) coordinate frame

Cijkm_xyz_frame(i, j, k, m)[source]

Cijkm stiffness constant in the (xyz) coordinate frame

Cij_mat_frame(i, j)[source]

Cij stiffness constant in the material coordinate frame

Cijkm_mat_frame(i, j, k, m)[source]

Cijkm stiffness constant in the material coordinate frame

property C11

C11 stiffness constant in the material coordinate frame

property C12

C12 stiffness constant in the material coordinate frame

property C13

C13 stiffness constant in the material coordinate frame

property C14

C14 stiffness constant in the material coordinate frame

property C15

C15 stiffness constant in the material coordinate frame

property C16

C16 stiffness constant in the material coordinate frame

property C22

C22 stiffness constant in the material coordinate frame

property C23

C23 stiffness constant in the material coordinate frame

property C24

C24 stiffness constant in the material coordinate frame

property C25

C25 stiffness constant in the material coordinate frame

property C26

C26 stiffness constant in the material coordinate frame

property C33

C33 stiffness constant in the material coordinate frame

property C34

C34 stiffness constant in the material coordinate frame

property C35

C35 stiffness constant in the material coordinate frame

property C36

C36 stiffness constant in the material coordinate frame

property C44

C44 stiffness constant in the material coordinate frame

property C45

C45 stiffness constant in the material coordinate frame

property C46

C46 stiffness constant in the material coordinate frame

property C55

C55 stiffness constant in the material coordinate frame

property C56

C56 stiffness constant in the material coordinate frame

labels: List[str]
property C66

C66 stiffness constant in the material coordinate frame

elastodynamicsx.pde.materials.anisotropicmaterials module

class elastodynamicsx.pde.materials.anisotropicmaterials.CubicMaterial(functionspace_tags_marker, rho, C11, C12, C44, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with cubic symmetry -> 3 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • C12 – Stiffness constant

  • C44 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['cubic']
class elastodynamicsx.pde.materials.anisotropicmaterials.HexagonalMaterial(functionspace_tags_marker, rho, C11, C13, C33, C44, C66, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with hexagonal symmetry -> 5 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C66 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['hexagonal']
class elastodynamicsx.pde.materials.anisotropicmaterials.TrigonalMaterial(functionspace_tags_marker, rho, C11, C12, C13, C14, C25, C33, C44, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with trigonal symmetry -> 7 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C44 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['trigonal']
class elastodynamicsx.pde.materials.anisotropicmaterials.TetragonalMaterial(functionspace_tags_marker, rho, C11, C12, C13, C16, C33, C44, C66, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with tetragonal symmetry -> 7 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C66 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['tetragonal']
class elastodynamicsx.pde.materials.anisotropicmaterials.OrthotropicMaterial(functionspace_tags_marker, rho, C11, C12, C13, C22, C23, C33, C44, C55, C66, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with orthotropic symmetry -> 9 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C66 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['orthotropic']
class elastodynamicsx.pde.materials.anisotropicmaterials.MonoclinicMaterial(functionspace_tags_marker, rho, C11, C12, C13, C15, C22, C23, C25, C33, C35, C44, C46, C55, C66, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with monoclinic symmetry -> 13 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C66 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['monoclinic']
class elastodynamicsx.pde.materials.anisotropicmaterials.TriclinicMaterial(functionspace_tags_marker, rho, C11, C12, C13, C14, C15, C16, C22, C23, C24, C25, C26, C33, C34, C35, C36, C44, C45, C46, C55, C56, C66, **kwargs)[source]

Bases: ElasticMaterial

A linear elastic material with triclinic symmetry -> 21 independent constants

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C11 – Stiffness constant

  • ... – Stiffness constant

  • C66 – Stiffness constant

Keyword Arguments:

**kwargs – Passed to ElasticMaterial

labels: List[str] = ['triclinic']

elastodynamicsx.pde.materials.hyperelasticmaterials module

class elastodynamicsx.pde.materials.hyperelasticmaterials.HyperelasticMaterial(functionspace_tags_marker, rho, **kwargs)[source]

Bases: Material

Base class for hyperelastic materials

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • sigma – Stress function

Keyword Arguments:

**kwargs – see Material

P(u)[source]

First Piola-Kirchhoff stress

K_fn_CG(u, v)[source]

Stiffness form function for a Continuous Galerkin formulation

K_fn_DG(u, v)[source]

(Not implemented) Stiffness form function for a Discontinuous Galerkin formulation

DG_numerical_flux(u, v)[source]

(Not implemented) Numerical flux for a Disontinuous Galerkin formulation

class elastodynamicsx.pde.materials.hyperelasticmaterials.Murnaghan(functionspace_tags_marker, rho, lambda_, mu, l_, m_, n_, **kwargs)[source]

Bases: HyperelasticMaterial

Murnaghan’s model

Strain energy density:
\[W = \frac{\lambda}{2} \mathrm{tr}(\mathbf{E})^2 + \mu \mathrm{tr}(\mathbf{E}^2) + \frac{A}{3} \mathrm{tr}(\mathbf{E}^3) + B \mathrm{tr}(\mathbf{E}) \mathrm{tr}(\mathbf{E}^2) + \frac{C}{3} \mathrm{tr}(\mathbf{E})^3\]

with: \(l=B+C\), \(m=\frac{1}{2}A+B\), \(n=A\).

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • lambda – Lame’s first parameter

  • mu – Lame’s second parameter (shear modulus)

  • l – Murnaghan’s third order elastic constant

  • m – Murnaghan’s third order elastic constant

  • n – Murnaghan’s third order elastic constant

Keyword Arguments:

**kwargs – Passed to HyperelasticMaterial

See:

https://en.wikipedia.org/wiki/Acoustoelastic_effect

labels: List[str] = ['murnaghan']
P(u)[source]

First Piola-Kirchhoff stress

property Z_N

(WARNING, infinitesimal strain asymptotics) P-wave mechanical impedance \(\rho c_L\)

property Z_T

(WARNING, infinitesimal strain asymptotics) S-wave mechanical impedance \(\rho c_S\)

class elastodynamicsx.pde.materials.hyperelasticmaterials.DummyIsotropicMaterial(functionspace_tags_marker, rho, lambda_, mu, **kwargs)[source]

Bases: HyperelasticMaterial

A dummy implementation of an isotropic linear elastic material based on a HyperelasticMaterial

Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • lambda – Lame’s first parameter

  • mu – Lame’s second parameter (shear modulus)

Keyword Arguments:

**kwargs – Passed to HyperelasticMaterial

labels: List[str] = ['dummy-isotropic']
P(u)[source]

Infinitesimal stress function; NOT the first Piola-Kirchhoff stress

property Z_N

P-wave mechanical impedance \(\rho c_L\)

property Z_T

S-wave mechanical impedance \(\rho c_S\)

class elastodynamicsx.pde.materials.hyperelasticmaterials.StVenantKirchhoff(functionspace_tags_marker, rho, lambda_, mu, **kwargs)[source]

Bases: HyperelasticMaterial

Saint Venant-Kirchhoff model

Strain energy density:
\[W = \frac{\lambda}{2} \mathrm{tr}(\mathbf{E})^2 + \mu \mathrm{tr}(\mathbf{E}^2)\]
Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • lambda – Lame’s first parameter

  • mu – Lame’s second parameter (shear modulus)

Keyword Arguments:

**kwargs – Passed to HyperelasticMaterial

See:

https://en.wikipedia.org/wiki/Hyperelastic_material

labels: List[str] = ['stvenant-kirchhoff', 'saintvenant-kirchhoff']
P(u)[source]

First Piola-Kirchhoff stress

property Z_N

(WARNING, infinitesimal strain asymptotics) P-wave mechanical impedance \(\rho c_L\)

property Z_T

(WARNING, infinitesimal strain asymptotics) S-wave mechanical impedance \(\rho c_S\)

class elastodynamicsx.pde.materials.hyperelasticmaterials.MooneyRivlinIncompressible(functionspace_tags_marker, rho, C1, C2, **kwargs)[source]

Bases: HyperelasticMaterial

Mooney-Rivlin model for an incompressible solid

Strain energy density:
\[W = C_1 (\overline{I}_1 - 3) + C_2 (\overline{I}_2 - 3)\]
Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C1 – first parameter

  • C2 – second parameter

Keyword Arguments:

**kwargs – Passed to HyperelasticMaterial

See:

https://en.wikipedia.org/wiki/Mooney%E2%80%93Rivlin_solid

labels: List[str] = ['mooney-rivlin-incomp']
P(u)[source]

First Piola-Kirchhoff stress

property C1
property C2
class elastodynamicsx.pde.materials.hyperelasticmaterials.MooneyRivlinCompressible(functionspace_tags_marker, rho, C10, C01, D1, **kwargs)[source]

Bases: HyperelasticMaterial

Mooney-Rivlin model for a compressible solid

Strain energy density:
\[W = C_{10} (\overline{I}_1 - 3) + C_{01} (\overline{I}_2 - 3) + \frac{1}{D_1} (J - 1)^2\]
Parameters:
  • functionspace_tags_marker – See Material

  • rho – Density

  • C10 – First parameter

  • C01 – Second parameter

  • D1 – Third parameter

Keyword Arguments:

**kwargs – Passed to HyperelasticMaterial

See:

https://en.wikipedia.org/wiki/Mooney%E2%80%93Rivlin_solid

labels: List[str] = ['mooney-rivlin-comp']
P(u)[source]

First Piola-Kirchhoff stress

property C1
property C2
elastodynamicsx.pde.materials.hyperelasticmaterials.GreenLagrangeStrain(u)[source]

elastodynamicsx.pde.materials.dampings module

The damping module implements laws to model attenuation. A Damping instance is meant to be connected to a Material instance and thereby provides the damping form of the PDE.

The recommended way to instanciate a damping law is to use the damping function.

class elastodynamicsx.pde.materials.dampings.Damping[source]

Bases: object

Dummy base class for damping laws

labels: List[str]
C_fn(u, v)[source]

The damping form

class elastodynamicsx.pde.materials.dampings.NoDamping[source]

Bases: Damping

No damping

labels: List[str] = ['none']
C_fn(u, v)[source]

The damping form

Returns:

None

class elastodynamicsx.pde.materials.dampings.RayleighDamping(eta_m, eta_k)[source]

Bases: Damping

Rayleigh damping law, i.e. whose damping form is a linear combination of the mass and stiffness forms of the host material

\[c(u,v) = \eta_m m(u,v) + \eta_k k(u,v)\]
labels: List[str] = ['rayleigh']
property eta_m

Parameter of the mass-matrix part of the damping

property eta_k

Parameter of the stiffness-matrix part of the damping

C_fn(u, v)[source]

The damping form

property host_material

Host material from whom the mass and stiffness matrices are copied

Connects to a host material from whom the mass and stiffness matrices will be copied

elastodynamicsx.pde.materials.dampings.damping(type_: str, *args) Damping[source]

Builder method that instanciates the desired damping law type

Parameters:
  • type

    Available options are:

    • ’none’

    • ’rayleigh’

  • *args – Passed to the required damping law

Returns:

An instance of the desired damping law

Example

from elastodynamicsx.pde import damping, material

dmp = damping('none')
dmp = damping('rayleigh', eta_m, eta_k)

mat = material(V, 'isotropic', rho, lambda_, mu, damping=dmp)

elastodynamicsx.pde.materials.kinematics module

The kinematics module is mainly designed for internal use and will probably not be used by an external user. It contains convenience functions to build some useful differential operators at the required ufl format, for many possible space dimensions and number of components of the function space.

elastodynamicsx.pde.materials.kinematics.epsilon_vector(u)[source]
elastodynamicsx.pde.materials.kinematics.epsilon_scalar(u)[source]
elastodynamicsx.pde.materials.kinematics.get_epsilon_function(dim, nbcomps)[source]

The strain function for a given dimension and number of components, in matrix form.

elastodynamicsx.pde.materials.kinematics.get_epsilonVoigt_function(dim, nbcomps)[source]

The strain function for a given dimension and number of components, in vector form (Voigt notation).

elastodynamicsx.pde.materials.kinematics.get_L_operators(dim, nbcomps, k_nrm=None)[source]
Parameters:
  • dim – space dimension

  • nbcomps – number of components

  • k_nrm

    (dim==1 only) A unitary vector (len=3) representing the phase direction.

    typically: ufl.as_vector([0,ay,az]) default : ufl.as_vector([0,1,0])