cratepy.online.crom.asca.ElasticReferenceMaterial

class ElasticReferenceMaterial(strain_formulation, problem_type, self_consistent_scheme, conv_tol=0.0001)[source]

Bases: object

Elastic reference material.

_n_dim

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]

_material_properties

Elastic material properties (key, str) values (item, {int, float, bool}).

Type:

dict

_material_properties_old

Last loading increment converged elastic material properties (key, str) values (item, {int, float, bool}).

Type:

dict

_material_properties_init

Elastic material properties (key, str) values (item, {int, float, bool}) initial guess.

Type:

dict

_material_properties_scs_init

Elastic material properties (key, str) values (item, {int, float, bool}) converged in the first loading increment.

Type:

dict

_elastic_tangent_mf

Elastic tangent modulus in matricial form.

Type:

numpy.ndarray (2d)

_elastic_compliance_matrix

Elastic compliance in matrix form.

Type:

numpy.ndarray (2d)

_scs_iter

Self-consistent scheme iteration counter.

Type:

int

_norm_dE

Normalized iterative change of Young modulus associated with the last self-consistent iteration convergence evaluation.

Type:

float

_norm_dv

Normalized iterative change of Poisson ratio associated with the last self-consistent iteration convergence evaluation.

Type:

float

init_material_properties(self, material_phases, material_phases_properties, material_phases_vf, properties=None)[source]

Set initial guess of elastic reference material properties.

update_material_properties(self, E, v)[source]

Update elastic reference material properties.

update_converged_material_properties(self)[source]

Update converged elastic reference material properties.

reset_material_properties(self)[source]

Reset material properties to last loading increment values.

set_material_properties_scs_init(self)[source]

Set material properties converged in the first loading increment.

get_material_properties(self)[source]

Get elastic reference material properties.

get_elastic_tangent_mf(self)[source]

Get elastic tangent modulus in matricial form.

get_elastic_compliance_matrix(self)[source]

Get elastic compliance in matrix form.

init_scs_iter(self)[source]

Initialize self-consistent scheme iteration counter.

update_scs_iter(self)[source]

Update self-consistent scheme iteration counter.

get_scs_iter(self)[source]

Get self-consistent scheme iteration counter.

get_norm_dE(self)[source]

Get normalized iterative change of Young modulus.

get_norm_dv(self)[source]

Get normalized iterative change of Poisson ratio.

self_consistent_update(self, strain_mf, strain_old_mf, stress_mf, stress_old_mf, eff_tangent_mf)[source]

Compute reference elastic properties through self-consistent scheme.

_update_elastic_tangent(self)[source]

Update reference material elastic tangent modulus and compliance.

_check_scs_solution(self, E, v)[source]

Check admissibility of self-consistent scheme iterative solution.

check_scs_convergence(self, E, v)[source]

Check self-consistent scheme iterative solution convergence.

get_available_scs(strain_formulation)[source]

Get available self-consistent schemes.

lame_from_technical(E, v)[source]

Get Lamé parameters from Young modulus and Poisson ratio.

technical_from_lame(lam, miu)[source]

Get Young modulus and Poisson ratio from Lamé parameters.

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

  • self_consistent_scheme ({'regression',}, default='regression') – Self-consistent scheme to update the elastic reference material properties.

  • conv_tol (float, default=1e-4) – Self-consistent scheme convergence tolerance.

List of Public Methods

check_scs_convergence

Check self-consistent scheme iterative solution convergence.

get_available_scs

Get available self-consistent schemes.

get_elastic_compliance_matrix

Get elastic compliance in matrix form.

get_elastic_tangent_mf

Get elastic tangent modulus in matricial form.

get_material_properties

Get elastic reference material properties.

get_norm_dE

Get normalized iterative change of Young modulus.

get_norm_dv

Get normalized iterative change of Poisson ratio.

get_scs_iter

Get self-consistent scheme iteration counter.

init_material_properties

Set initial guess of elastic reference material properties.

init_scs_iter

Initialize self-consistent scheme iteration counter.

lame_from_technical

Get Lamé parameters from Young modulus and Poisson ratio.

reset_material_properties

Reset material properties to last loading increment values.

self_consistent_update

Compute reference elastic properties through self-consistent scheme.

set_material_properties_scs_init

Set material properties converged in the first loading increment.

technical_from_lame

Get Young modulus and Poisson ratio from Lamé parameters.

update_converged_material_properties

Update converged elastic reference material properties.

update_material_properties

Update elastic reference material properties.

update_scs_iter

Update self-consistent scheme iteration counter.

Methods

__init__(strain_formulation, problem_type, self_consistent_scheme, conv_tol=0.0001)[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).

  • self_consistent_scheme ({'regression',}, default='regression') – Self-consistent scheme to update the elastic reference material properties.

  • conv_tol (float, default=1e-4) – Self-consistent scheme convergence tolerance.

_check_scs_solution(E, v)[source]

Check admissibility of self-consistent scheme iterative solution.

Parameters:
  • E (float) – Young modulus of elastic reference material.

  • v (float) – Poisson ratio of elastic reference material.

Returns:

is_admissible – True if self-consistent scheme iterative solution is admissible, False otherwise.

Return type:

bool

_update_elastic_tangent()[source]

Update reference material elastic tangent modulus and compliance.

Infinitesimal strains:

\[\boldsymbol{\mathsf{D}}^{e,\,0} = \lambda^{0} \boldsymbol{I} \otimes \boldsymbol{I} + 2 \mu^{0} \boldsymbol{\mathsf{I}}_{s} \, ,\]

where \(\boldsymbol{\mathsf{D}}^{e,\,0}\) is the reference material elastic tangent modulus, \(\lambda^{0}\) and \(\mu^{0}\) are the elastic Lamé parameters, \(\boldsymbol{I}\) is the second-order identity tensor, and \(\boldsymbol{\mathsf{I}}_{s}\) is the fourth-order symmetric identity tensor.

\[\boldsymbol{\mathsf{S}}^{e,\,0} = - \dfrac{\lambda^{0}}{2 \mu^{0} (3\lambda^{0} + 2\mu^{0})} \boldsymbol{I} \otimes \boldsymbol{I} + \dfrac{1}{2 \mu^{0}} \boldsymbol{\mathsf{I}}_{s} \, ,\]

where \(\boldsymbol{\mathsf{S}}^{e,\,0}\) is the reference material elastic compliance, \(\lambda^{0}\) and \(\mu^{0}\) are the elastic Lamé parameters, \(\boldsymbol{I}\) is the second-order identity tensor, and \(\boldsymbol{\mathsf{I}}_{s}\) is the fourth-order symmetric identity tensor.


Finite strains:

\[\boldsymbol{\mathsf{A}}^{e,\,0} = \lambda^{0} \boldsymbol{I} \otimes \boldsymbol{I} + 2 \mu^{0} \boldsymbol{\mathsf{I}} \, ,\]

where \(\boldsymbol{\mathsf{A}}^{e,\,0}\) is the reference material hyperelastic tangent modulus, \(\lambda^{0}\) and \(\mu^{0}\) are the elastic Lamé parameters, \(\boldsymbol{I}\) is the second-order identity tensor, and \(\boldsymbol{\mathsf{I}}\) is the fourth-order identity tensor.

\[\boldsymbol{\mathsf{S}}^{e,\,0} = - \dfrac{\lambda^{0}}{2 \mu^{0} (3\lambda^{0} + 2\mu^{0})} \boldsymbol{I} \otimes \boldsymbol{I} + \dfrac{1}{2 \mu^{0}} \boldsymbol{\mathsf{I}} \, ,\]

where \(\boldsymbol{\mathsf{S}}^{e,\,0}\) is the reference material hyperelastic compliance, \(\lambda^{0}\) and \(\mu^{0}\) are the elastic Lamé parameters, \(\boldsymbol{I}\) is the second-order identity tensor, and \(\boldsymbol{\mathsf{I}}\) is the fourth-order symmetric identity tensor.

check_scs_convergence(E, v)[source]

Check self-consistent scheme iterative solution convergence.

Parameters:
  • E (float) – Young modulus of elastic reference material.

  • v (float) – Poisson ratio of elastic reference material.

Returns:

is_converged – True if self-consistent scheme iterative solution converged, False otherwise.

Return type:

bool

static get_available_scs(strain_formulation)[source]

Get available self-consistent schemes.

Parameters:

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

Returns:

available_scs – Available self-consistent schemes.

Return type:

tuple[str]

get_elastic_compliance_matrix()[source]

Get elastic compliance in matrix form.

Returns:

elastic_compliance_matrix – Elastic compliance in matrix form.

Return type:

numpy.ndarray (2d)

get_elastic_tangent_mf()[source]

Get elastic tangent modulus in matricial form.

Returns:

elastic_tangent_mf – Elastic tangent modulus in matricial form.

Return type:

numpy.ndarray (2d)

get_material_properties()[source]

Get elastic reference material properties.

Returns:

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

Return type:

dict

get_norm_dE()[source]

Get normalized iterative change of Young modulus.

Returns:

norm_dE – Normalized iterative change of Young modulus associated with the last self-consistent iteration convergence evaluation.

Return type:

float

get_norm_dv()[source]

Get normalized iterative change of Poisson ratio.

Returns:

norm_dv – Normalized iterative change of Poisson ratio associated with the last self-consistent iteration convergence evaluation.

Return type:

float

get_scs_iter()[source]

Get self-consistent scheme iteration counter.

Returns:

scs_iter – Self-consistent scheme iteration counter.

Return type:

int

init_material_properties(material_phases, material_phases_properties, material_phases_vf, properties=None)[source]

Set initial guess of elastic reference material properties.

Parameters:
  • material_phases (list[str]) – RVE material phases labels (str).

  • material_phases_properties (dict) – Constitutive model material properties (item, dict) associated with each material phase (key, str).

  • material_phases_vf (dict) – Volume fraction (item, float) associated with each material phase (key, str).

  • properties (dict, default=None) – Initial guess (item, float) of elastic reference material properties (key, str). Expecting Young’s modulus (‘E’) and Poisson’s coefficient (‘v’) for an isotropic elastic reference material.

init_scs_iter()[source]

Initialize self-consistent scheme iteration counter.

static lame_from_technical(E, v)[source]

Get Lamé parameters from Young modulus and Poisson ratio.

Parameters:
  • E (float) – Young modulus.

  • v (float) – Poisson ratio.

Returns:

  • lam (float) – Lamé parameter.

  • miu (float) – Lamé parameter.

reset_material_properties()[source]

Reset material properties to last loading increment values.

self_consistent_update(strain_mf, strain_old_mf, stress_mf, stress_old_mf, eff_tangent_mf)[source]

Compute reference elastic properties through self-consistent scheme.

Parameters:
  • strain_mf (numpy.ndarray (1d)) – Homogenized strain (matricial form): infinitesimal strain tensor (infinitesimal strains) or deformation gradient (finite strains)

  • strain_old_mf (numpy.ndarray (1d)) – Last converged homogenized strain (matricial form): infinitesimal strain tensor (infinitesimal strains) or deformation gradient (finite strains)

  • stress_mf (numpy.ndarray (1d)) – Homogenized stress (matricial form): Cauchy stress tensor (infinitesimal strains) or first Piola-Kirchhoff stress tensor (finite strains).

  • stress_old_mf (numpy.ndarray (1d)) – Last converged homogenized stress (matricial form): Cauchy stress tensor (infinitesimal strains) or first Piola-Kirchhoff stress tensor (finite strains).

  • eff_tangent_mf (numpy.ndarray (2d)) – CRVE effective material tangent modulus (matricial form).

Returns:

  • is_admissible (bool) – True if self-consistent scheme iterative solution is admissible, False otherwise.

  • E (float) – Young modulus of elastic reference material.

  • v (float) – Poisson ratio of elastic reference material.

set_material_properties_scs_init()[source]

Set material properties converged in the first loading increment.

static technical_from_lame(lam, miu)[source]

Get Young modulus and Poisson ratio from Lamé parameters.

Parameters:
  • lam (float) – Lamé parameter.

  • miu (float) – Lamé parameter.

Returns:

  • E (float) – Young modulus.

  • v (float) – Poisson ratio.

update_converged_material_properties()[source]

Update converged elastic reference material properties.

update_material_properties(E, v)[source]

Update elastic reference material properties.

Parameters:
  • E (float) – Young modulus of elastic reference material.

  • v (float) – Poisson ratio of elastic reference material.

update_scs_iter()[source]

Update self-consistent scheme iteration counter.