hookeai.simulators.fetorch.material.models.vmap.lou

Lou-Zhang-Yoon model with general differentiable yield function.

This module includes the implementation of the Lou-Zhang-Yoon model with general differentiable yield function and isotropic hardening.

The apex singularity is handled by means of a purely volumetric return-mapping along the hydrostatic axis.

This implementation is made compatible with the use of PyTorch vectorizing maps that, at the current moment, do not support auto differentiable data-dependent control flows based on if statements or similar constructs (e.g., torch.cond()). Workarounds based on torch.where() were successfully implemented, but these lead to complex or inefficient coding, mainly because they are constrained by elementwise operations (require pre-computations of true and false paths or repeated true/false function calls for each element).

When torch.cond() is available, the state_update() method can be simplified as follows:

  1. The condition in torch.cond() does not need to be a Tensor with the same shape as the true/false output tensors

  2. Avoid flow vector pre-computations - only perform the needed step computation based on torch.cond()

  3. Avoid elastic and plastic steps pre-computations - only perform the needed step computation based on torch.cond() condition

  4. The is_elastic_step flag is no longer required in _plastic_step()

  5. Avoid elastic and plastic consistent tangent moduli pre-computations - only compute the required tangent based on torch.cond() condition

Classes

LouZhangYoonVMAP

Lou-Zhang-Yoon model with general differentiable yield function.

Functions

convert_dict_to_float32(tensor_dict[, ...])

Convert all floating point torch tensors in dictionary to torch.float32.

convert_dict_to_float64(tensor_dict[, ...])

Convert all floating point torch tensors in dictionary to torch.float64.

convert_dict_to_tensor(data_dict[, is_inplace])

Convert all int, float and bool in dictionary to torch.Tensor.

convert_tensor_to_float64(tensor)

Convert floating point torch tensor to torch.float64.

ddot22_1(a2, b2)

ddot24_1(a2, b4)

ddot42_1(a4, b2)

ddot44_1(a4, b4)

dyad22_1(a2, b2)

fo_dinv_sym(inv)

Derivative of inverse of symmetric second-order tensor w.r.t.

get_id_operators(n_dim[, device])

Set common second- and fourth-order identity operators.

get_problem_type_parameters(problem_type)

Get parameters dependent on the problem type.

vget_state_2Dmf_from_3Dmf(mf_3d[, device])

Build 2D counterpart of 3D second- or fourth-order tensor.

vget_state_3Dmf_from_2Dmf(mf_2d, comp_33[, ...])

Build 3D counterpart of 2D second-order tensor.

vget_tensor_from_mf(tensor_mf, n_dim, comp_order)

Recover tensor from associated matricial form.

vget_tensor_mf(tensor, n_dim, comp_order[, ...])

Get tensor matricial form.

Classes

ConstitutiveModel(strain_formulation, ...[, ...])

Material constitutive model interface.

Elastic(strain_formulation, problem_type, ...)

Linear elastic constitutive model.

LouZhangYoonVMAP(strain_formulation, ...[, ...])

Lou-Zhang-Yoon model with general differentiable yield function.