cratepy.material.models.elastic.Elastic

class Elastic(strain_formulation, problem_type, material_properties)[source]

Bases: ConstitutiveModel

Linear elastic constitutive model.

_name

Constitutive model name.

Type:

str

_strain_type

Constitutive model strain formulation: infinitesimal strain formulation (‘infinitesimal’), finite strain formulation (‘finite’) or finite strain formulation through kinematic extension (infinitesimal constitutive formulation and purely finite strain kinematic extension - ‘finite-kinext’).

Type:

{‘infinitesimal’, ‘finite’, ‘finite-kinext’}

_source

Material constitutive model source.

Type:

{‘crate’,}

_ndim

Problem number of spatial dimensions.

Type:

int

_comp_order_sym

Strain/Stress components symmetric order.

Type:

list[str]

_comp_order_nsym

Strain/Stress components nonsymmetric order.

Type:

list[str]

get_required_properties()[source]

Get constitutive model material properties and constitutive options.

state_init(self)[source]

Get initialized material constitutive model state variables.

state_update(self, inc_strain, state_variables_old, su_max_n_iterations=20, su_conv_tol=1e-6)[source]

Perform constitutive model state update.

get_available_elastic_symmetries()[source]

Get available elastic symmetries under general anisotropy.

elastic_tangent_modulus(elastic_properties, elastic_symmetry='isotropic')[source]

Compute 3D elasticity tensor under general anisotropic elasticity.

get_technical_from_elastic_moduli(elastic_symmetry, elastic_properties)[source]

Get technical constants of elasticity from elastic moduli.

Constructor.

Parameters:
  • strain_formulation ({'infinitesimal', 'finite'}) – Problem strain formulation.

  • problem_type (int) – Problem type: 2D plane strain (1), 2D plane stress (2), 2D axisymmetric (3) and 3D (4).

  • material_properties (dict) – Constitutive model material properties (key, str) values (item, {int, float, bool}).

List of Public Methods

elastic_tangent_modulus

Compute 3D elasticity tensor under general anisotropic elasticity.

get_available_elastic_symmetries

Get available elastic symmetries under general anisotropy.

get_material_properties

Constitutive model material properties.

get_name

Get constitutive model name.

get_required_properties

Get constitutive model material properties and constitutive options.

get_source

Get material constitutive model source.

get_strain_type

Get material constitutive model strain formulation.

get_technical_from_elastic_moduli

Get technical constants of elasticity from elastic moduli.

state_init

Get initialized material constitutive model state variables.

state_update

Perform constitutive model state update.

Methods

__init__(strain_formulation, problem_type, material_properties)[source]

Constructor.

Parameters:
  • strain_formulation ({'infinitesimal', 'finite'}) – Problem strain formulation.

  • problem_type (int) – Problem type: 2D plane strain (1), 2D plane stress (2), 2D axisymmetric (3) and 3D (4).

  • material_properties (dict) – Constitutive model material properties (key, str) values (item, {int, float, bool}).

static elastic_tangent_modulus(elastic_properties, elastic_symmetry='isotropic')[source]

Compute 3D elasticity tensor under general anisotropic elasticity.

Parameters:
  • elastic_properties (dict) – Elastic material properties (key, str) values (item, float). Expecting independent elastic moduli (‘Eijkl’) according to elastic symmetries. Young modulus (‘E’) and Poisson’s ratio (‘v’) may alternatively provided under elastic isotropy.

  • elastic_symmetry ({'isotropic', 'transverse_isotropic', 'orthotropic', 'monoclinic', 'triclinic'}, default='isotropic') –

    Elastic symmetries:

    • ’triclinic’: assumes no elastic symmetries.

    • ’monoclinic’: assumes plane of symmetry 12.

    • ’orthotropic’: assumes planes of symmetry 12 and 13.

    • ’transverse_isotropic’: assumes axis of symmetry 3

    • ’isotropic’: assumes complete symmetry.

Returns:

elastic_tangent_mf – 3D elasticity tensor in matricial form.

Return type:

numpy.ndarray (2d)

static get_available_elastic_symmetries()[source]

Get available elastic symmetries under general anisotropy.

Available elastic symmetries:

  • Isotropic:

    Input data file syntax:

    elastic_symmetry isotropic 2
        E1111 < value >
        E1122 < value >
    

    or

    elastic_symmetry isotropic 2
        E < value >
        v < value >
    

    where

    • elastic_symmetry - Elastic symmetry and number of elastic moduli.

    • Eijkl - Elastic moduli. Young’s modulus (E) and Poisson’s coefficient (v) may be alternatively provided if elastic_symmetry is set as isotropic.


  • Transverse isotropic (axis of symmetry 3):

    Input data file syntax:

    elastic_symmetry transverse_isotropic 6
        euler_angles < value > < value > < value >
        Eijkl < value >
        ...
    

    where

    • elastic_symmetry - Elastic symmetry and number of elastic moduli.

    • euler_angles - Euler angles (degrees) sorted according with Bunge convention.

    • Eijkl - Elastic moduli.


  • Orthotropic (planes of symmetry 12 and 13):

    Input data file syntax:

    elastic_symmetry orthotropic 10
        euler_angles < value > < value > < value >
        Eijkl < value >
        ...
    

    where

    • elastic_symmetry - Elastic symmetry and number of elastic moduli.

    • euler_angles - Euler angles (degrees) sorted according with Bunge convention.

    • Eijkl - Elastic moduli.


  • Monoclinic (plane of symmetry 12):

    Input data file syntax:

    elastic_symmetry monoclinic 14
        euler_angles < value > < value > < value >
        Eijkl < value >
        ...
    

    where

    • elastic_symmetry - Elastic symmetry and number of elastic moduli.

    • euler_angles - Euler angles (degrees) sorted according with Bunge convention.

    • Eijkl - Elastic moduli.


  • Triclinic:

    Input data file syntax:

    elastic_symmetry triclinic 22
        euler_angles < value > < value > < value >
        Eijkl < value >
        ...
    

    where

    • elastic_symmetry - Elastic symmetry and number of elastic moduli.

    • euler_angles - Euler angles (degrees) sorted according with Bunge convention.

    • Eijkl - Elastic moduli.


Returns:

elastic_symmetries – Elastic moduli (item, tuple[str]) required for each available elastic symmetry (key, str).

Return type:

dict

get_material_properties()

Constitutive model material properties.

Returns:

material_properties – Constitutive model material properties (key, str) values (item, {int, float, bool}).

Return type:

dict

get_name()

Get constitutive model name.

Returns:

name – Constitutive model name.

Return type:

str

static get_required_properties()[source]

Get constitutive model material properties and constitutive options.

Input data file syntax:

elastic_symmetry < option > < number_of_elastic_moduli >
    euler_angles < value > < value > < value >
    Eijkl < value >
    Eijkl < value >
    ...

where

  • elastic_symmetry - Elastic symmetry and number of elastic moduli.

  • euler_angles - Euler angles (degrees) sorted according with Bunge convention. Not required if elastic_symmetry is set as isotropic.

  • Eijkl - Elastic moduli. Young’s modulus (E) and Poisson’s coefficient (v) may be alternatively provided if elastic_symmetry is set as isotropic.


Returns:

  • material_properties (list[str]) – Constitutive model material properties names (str).

  • constitutive_options (dict) – Constitutive options (key, str) and available specifications (item, tuple[str]).

get_source()

Get material constitutive model source.

Returns:

source – Material constitutive model source.

Return type:

{‘crate’,}

get_strain_type()

Get material constitutive model strain formulation.

Returns:

strain_type – Constitutive model strain formulation: infinitesimal strain formulation (‘infinitesimal’), finite strain formulation (‘finite’) or finite strain formulation through kinematic extension (infinitesimal constitutive formulation and purely finite strain kinematic extension - ‘finite-kinext’).

Return type:

{‘infinitesimal’, ‘finite’, ‘finite-kinext’}

get_technical_from_elastic_moduli(elastic_properties)[source]

Get technical constants of elasticity from elastic moduli.

Parameters:
  • elastic_symmetry ({'isotropic', 'transverse_isotropic', 'orthotropic', 'monoclinic', 'triclinic'}, default='isotropic') –

    Elastic symmetries:

    • ’triclinic’: assumes no elastic symmetries.

    • ’monoclinic’: assumes plane of symmetry 12.

    • ’orthotropic’: assumes planes of symmetry 12 and 13.

    • ’transverse_isotropic’: assumes axis of symmetry 3

    • ’isotropic’: assumes complete symmetry.

  • elastic_properties (dict) – Elastic material properties (key, str) values (item, float). Expecting independent elastic moduli (‘Eijkl’) according to elastic symmetries.

Returns:

technical_constants – Technical constants of elasticity according with elastic symmetries.

Return type:

dict

state_init()[source]

Get initialized material constitutive model state variables.

Constitutive model state variables:

  • e_strain_mf

    • Infinitesimal strains: Elastic infinitesimal strain tensor (matricial form).

    • Finite strains: Elastic spatial logarithmic strain tensor (matricial form).

    • Symbol: \(\boldsymbol{\varepsilon^{e}}\) / \(\boldsymbol{\varepsilon^{e}}\)

  • strain_mf

    • Infinitesimal strains: Infinitesimal strain tensor (matricial form).

    • Finite strains: Spatial logarithmic strain tensor (matricial form).

    • Symbol: \(\boldsymbol{\varepsilon}\) / \(\boldsymbol{\varepsilon}\)

  • stress_mf

    • Infinitesimal strains: Cauchy stress tensor (matricial form).

    • Finite strains: Kirchhoff stress tensor (matricial form) within state_update(), first Piola-Kirchhoff stress tensor (matricial form) otherwise.

    • Symbol: \(\boldsymbol{\sigma}\) / (\(\boldsymbol{\tau}\), \(\boldsymbol{P}\))

  • is_su_fail

    • State update failure flag.


Returns:

state_variables_init – Initialized constitutive model material state variables.

Return type:

dict

state_update(inc_strain, state_variables_old, su_max_n_iterations=20, su_conv_tol=1e-06)[source]

Perform constitutive model state update.

Parameters:
  • inc_strain (numpy.ndarray (2d)) – Incremental strain second-order tensor.

  • state_variables_old (dict) – Last converged constitutive model material state variables.

  • su_max_n_iterations (int, default=20) – State update maximum number of iterations.

  • su_conv_tol (float, default=1e-6) – State update convergence tolerance.

Returns:

  • state_variables (dict) – Material constitutive model state variables.

  • consistent_tangent_mf (numpy.ndarray (2d)) – Material constitutive model consistent tangent modulus in matricial form.