cratepy.online.loading.macloadincrem.LoadingSubpath

class LoadingSubpath(id, strain_formulation, problem_type, init_conv_hom_state, load, presctype, inc_lfacts, inc_times, max_subinc_level)[source]

Bases: object

Loading subpath.

_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]

_inc

Loading subpath increment counter.

Type:

int

_total_lfact

Loading subpath total load factor.

Type:

float

_total_time

Loading subpath total time.

Type:

float

_n_presc_strain

Number of prescribed loading strain components.

Type:

int

_n_presc_stress

Number of prescribed loading stress components.

Type:

int

_presc_strain_idxs

Prescribed loading strain components indexes.

Type:

list[int]

_presc_stress_idxs

Prescribed loading stress components indexes.

Type:

list[int]

_applied_load

For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the current applied loading constraints in a numpy.ndarray of shape (n_comps,).

Type:

dict

_inc_applied_load

For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the current incremental applied loading constraints in a numpy.ndarray of shape (n_comps,).

Type:

dict

_is_last_subpath_inc

Loading subpath last increment flag.

Type:

bool

_sub_inc_levels

History of subincrementation levels.

Type:

list

get_state(self)[source]

Get loading subpath state data.

update_inc(self)[source]

Update increment counter, total load factor and applied loading.

increment_cut(self)[source]

Perform loading increment cut.

get_applied_load(self)[source]

Get current applied loading.

get_inc_applied_load(self)[source]

Get current incremental applied loading.

_update_inc_applied_load(self)[source]

Update current incremental applied loading.

Constructor.

Parameters:
  • id (int) – Loading subpath id.

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

  • init_conv_hom_state (dict) – Converged homogenized state (item, numpy.ndarray of shape (n_comps,)) for key in {‘strain’, ‘stress’} at the beginning of loading subpath.

  • load (dict) – For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the loading constraints in a numpy.ndarray of shape (n_comps,).

  • presctype (numpy.ndarray (1d)) – Loading nature type ({‘strain’, ‘stress’}) associated with each macroscale loading constraint (numpy.ndarray of shape (n_comps,)).

  • inc_lfacts (numpy.ndarray (1d)) – Loading subpath incremental load factors (numpy.ndarray of shape (n_increments,)).

  • inc_times (numpy.ndarray (1d)) – Loading subpath incremental times (numpy.ndarray of shape (n_increments,)).

  • max_subinc_level (int) – Maximum level of loading subincrementation.

List of Public Methods

get_applied_load

Get current applied loading.

get_inc_applied_load

Get current incremental applied loading.

get_state

Get loading subpath state data.

increment_cut

Perform loading increment cut.

update_inc

Update increment counter, total load factor and applied loading.

Methods

__init__(id, strain_formulation, problem_type, init_conv_hom_state, load, presctype, inc_lfacts, inc_times, max_subinc_level)[source]

Constructor.

Parameters:
  • id (int) – Loading subpath id.

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

  • init_conv_hom_state (dict) – Converged homogenized state (item, numpy.ndarray of shape (n_comps,)) for key in {‘strain’, ‘stress’} at the beginning of loading subpath.

  • load (dict) – For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the loading constraints in a numpy.ndarray of shape (n_comps,).

  • presctype (numpy.ndarray (1d)) – Loading nature type ({‘strain’, ‘stress’}) associated with each macroscale loading constraint (numpy.ndarray of shape (n_comps,)).

  • inc_lfacts (numpy.ndarray (1d)) – Loading subpath incremental load factors (numpy.ndarray of shape (n_increments,)).

  • inc_times (numpy.ndarray (1d)) – Loading subpath incremental times (numpy.ndarray of shape (n_increments,)).

  • max_subinc_level (int) – Maximum level of loading subincrementation.

_update_inc_applied_load()[source]

Update current incremental applied loading.

Infinitesimal strains:

\[\boldsymbol{\varepsilon}_{n+1} = \boldsymbol{\varepsilon}_{0} + \lambda_{n+1} (\boldsymbol{\varepsilon}^{\text{total}} - \boldsymbol{\varepsilon}_{0})\]
\[\Delta \boldsymbol{\varepsilon}_{n+1} = \Delta \lambda_{n+1} (\boldsymbol{\varepsilon}^{ \text{total}} - \boldsymbol{\varepsilon}_{0})\]

where \(\boldsymbol{\varepsilon}_{n+1}\) is the current applied infinitesimal strain tensor, \(\lambda_{n+1}\) is the current load factor, \(\boldsymbol{\varepsilon}^{\text{total}}\) is the total infinitesimal strain tensor prescribed in the mononotic loading path, \(\boldsymbol{\varepsilon}_{0}\) is the infinitesimal strain tensor at the beginning of the mononotic loading path, \(\Delta \boldsymbol{\varepsilon}_{n+1}\) is the incremental infinitesimal strain tensor, \(\Delta \lambda_{n+1}\) is the incremental load factor, and \(n+1\) denotes the current increment.

\[\boldsymbol{\sigma}_{n+1} = \boldsymbol{\sigma}_{0} + \lambda_{n+1} (\boldsymbol{\sigma}^{\text{total}} - \boldsymbol{\sigma}_{0})\]
\[\Delta \boldsymbol{\sigma}_{n+1} = \Delta \lambda_{n+1} (\boldsymbol{\sigma}^{\text{total}} - \boldsymbol{\sigma}_{0})\]

where \(\boldsymbol{\sigma}_{n+1}\) is the current applied Cauchy stress tensor, \(\lambda_{n+1}\) is the current load factor, \(\boldsymbol{\sigma}^{\text{total}}\) is the total Cauchy stress tensor prescribed in the mononotic loading path, \(\boldsymbol{\sigma}_{0}\) is the Cauchy stress tensor at the beginning of the mononotic loading path, \(\Delta \boldsymbol{\sigma}_{n+1}\) is the incremental Cauchy stress tensor, \(\Delta \lambda_{n+1}\) is the incremental load factor, and \(n+1\) denotes the current increment.


Finite strains:

\[\boldsymbol{F}_{n+1} = \exp (\lambda_{n+1} \ln ( \boldsymbol{F}^{\text{total}} \boldsymbol{F}_{0}^{-1})) \boldsymbol{F}_{0}\]
\[\boldsymbol{F}_{\Delta, n+1} = \exp (\Delta \lambda_{n+1} \ln ( \boldsymbol{F}^{\text{total}} \boldsymbol{F}_{0}^{-1}))\]

where \(\boldsymbol{F}_{n+1}\) is the current applied deformation gradient, \(\lambda_{n+1}\) is the current load factor, \(\boldsymbol{F}_{\text{total}}\) is the total deformation gradient prescribed in the mononotic loading path, and \(\boldsymbol{F}_{0}\) is the deformation gradient at the beginning of the mononotic loading path, \(\boldsymbol{F}_{\Delta, n+1}\) is the incremental deformation gradient, \(\Delta \lambda_{n+1}\) is the incremental load factor, and \(n+1\) denotes the current increment.

\[\boldsymbol{P}_{n+1} = \boldsymbol{P}_{0} + \lambda_{n+1} (\boldsymbol{P}^{\text{total}} - \boldsymbol{P}_{0})\]
\[\Delta \boldsymbol{P}_{n+1} = \Delta \lambda_{n+1} (\boldsymbol{P}^{\text{total}} - \boldsymbol{P}_{0})\]

where \(\boldsymbol{P}_{n+1}\) is the current applied first Piola-Kirchhoff stress tensor, \(\lambda_{n+1}\) is the current load factor, \(\boldsymbol{P}^{\text{total}}\) is the total first Piola-Kirchhoff stress tensor prescribed in the mononotic loading path, \(\boldsymbol{P}_{0}\) is the first Piola-Kirchhoff stress tensor at the beginning of the mononotic loading path, \(\Delta \boldsymbol{P}_{n+1}\) is the incremental first Piola-Kirchhoff stress tensor, \(\Delta \lambda_{n+1}\) is the incremental load factor, and \(n+1\) denotes the current increment.

Remark: It is not straightforward how to perform a component-wise multiplicative decomposition of the deformation gradient in the case of a mixed strain-stress loading prescription.

get_applied_load()[source]

Get current applied loading.

Returns:

applied_load – For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the current applied loading constraints in a numpy.ndarray of shape (n_comps,).

Return type:

dict

get_inc_applied_load()[source]

Get current incremental applied loading.

Returns:

inc_applied_load – For each prescribed loading nature type (key, {‘strain’, ‘stress’}), stores the current incremental applied loading constraints in a numpy.ndarray of shape (n_comps,).

Return type:

dict

get_state()[source]

Get loading subpath state data.

Returns:

  • id (int) – Loading subpath id.

  • inc (int) – Loading subpath increment counter.

  • total_lfact (float) – Loading subpath current total load factor.

  • inc_lfact (float) – Loading subpath current incremental load factor.

  • total_time (float) – Loading subpath current total time.

  • inc_time (float) – Loading subpath current incremental time.

  • sub_inc_level (int) – Loading subpath current subincrementation level.

increment_cut()[source]

Perform loading increment cut.

update_inc()[source]

Update increment counter, total load factor and applied loading.