hookeai.simulators.fetorch.structure.structure_state.Elastic

class Elastic(strain_formulation, problem_type, model_parameters, device_type='cpu')[source]

Bases: ConstitutiveModel

Linear elastic constitutive model.

_name

Material constitutive model name.

Type:

str

_strain_type

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

Type:

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

_model_parameters

Material constitutive model parameters.

Type:

dict

_n_dim

Problem number of spatial dimensions.

Type:

int

_comp_order_sym

Strain/Stress components symmetric order.

Type:

tuple[str]

_comp_order_nsym

Strain/Stress components nonsymmetric order.

Type:

tuple[str]

_device_type

Type of device on which torch.Tensor is allocated.

Type:

{‘cpu’, ‘cuda’}

_device

Device on which torch.Tensor is allocated.

Type:

torch.device

get_required_model_parameters()[source]

Get required material constitutive model parameters.

state_init(self)[source]

Get initialized material constitutive model state variables.

state_update(self, inc_strain, state_variables_old)[source]

Perform material 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).

  • model_parameters (dict) – Material constitutive model parameters.

  • device_type ({'cpu', 'cuda'}, default='cpu') – Type of device on which torch.Tensor is allocated.

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_device

Get device on which torch.Tensor is allocated.

get_model_parameters

Get material constitutive model parameters.

get_name

Get material constitutive model name.

get_required_model_parameters

Get required material constitutive model parameters.

get_strain_type

Get material constitutive model strain formulation.

get_technical_from_elastic_moduli

Get technical constants of elasticity from elastic moduli.

set_device

Set device on which torch.Tensor is allocated.

state_init

Get initialized material constitutive model state variables.

state_update

Perform material constitutive model state update.

Methods

__init__(strain_formulation, problem_type, model_parameters, device_type='cpu')[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).

  • model_parameters (dict) – Material constitutive model parameters.

  • device_type ({'cpu', 'cuda'}, default='cpu') – Type of device on which torch.Tensor is allocated.

static elastic_tangent_modulus(elastic_properties, elastic_symmetry='isotropic', device=None)[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 be 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.

  • device (torch.device, default=None) – Device on which torch.Tensor is allocated.

Returns:

elastic_tangent_mf – 3D elasticity tensor in matricial form.

Return type:

torch.Tensor(2d)

static get_available_elastic_symmetries()[source]

Get available elastic symmetries under general anisotropy.

Returns:

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

Return type:

dict

get_device()

Get device on which torch.Tensor is allocated.

Returns:

  • device_type ({‘cpu’, ‘cuda’}) – Type of device on which torch.Tensor is allocated.

  • device (torch.device) – Device on which torch.Tensor is allocated.

get_model_parameters()

Get material constitutive model parameters.

Returns:

model_parameters – Material constitutive model parameters.

Return type:

dict

get_name()

Get material constitutive model name.

Returns:

name – Material constitutive model name.

Return type:

str

static get_required_model_parameters()[source]

Get required material constitutive model parameters.

Model parameters:

  • ‘elastic_symmetry’ : Elastic symmetry (str, {‘isotropic’, ‘transverse_isotropic’, ‘orthotropic’, ‘monoclinic’, ‘triclinic’});

  • ‘elastic_moduli’ : Elastic moduli (dict, {‘Eijkl’: float});

  • ‘euler_angles’Euler angles (degrees) sorted according with Bunge

    convention (tuple[float]).

Returns:

model_parameters_names – Material constitutive model parameters names (str).

Return type:

tuple[str]

get_strain_type()

Get material constitutive model strain formulation.

Returns:

strain_type – Material constitutive model strain formulation: infinitesimal strain formulation (‘infinitesimal’), finite strain formulation (‘finite’) or finite strain formulation through 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

set_device(device_type)

Set device on which torch.Tensor is allocated.

Parameters:
  • device_type ({'cpu', 'cuda'}) – Type of device on which torch.Tensor is allocated.

  • device (torch.device) – Device on which torch.Tensor is allocated.

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 material constitutive model state variables.

Return type:

dict

state_update(inc_strain, state_variables_old)[source]

Perform material constitutive model state update.

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

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

Returns:

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

  • consistent_tangent_mf (torch.Tensor(2d)) – Material constitutive model consistent tangent modulus stored in matricial form.