Micromechanics

This module provides functions for multiphase material modeling and micromechanical homogenization schemes.

void umat_multi(phase_characteristics &rve, const arma::mat &DR, const double &Time, const double &DTime, const int &ndi, const int &nshr, bool &start, const unsigned int &solver_type, double &tnew_dt, const int &control)

props[0] : Number of phases

props[1] : Number of the file NPhase[i].dat utilized

props[2] : Number of integration points in the 1 direction

props[3] : Number of integration points in the 2 direction

User material subroutine for non-linear N-phases heterogeneous materials.

This function performs the constitutive update for a multi-phase material using a specified homogenization scheme. It handles:

  • Localization of macroscopic strain to each phase

  • Call to constituent UMATs for each phase

  • Homogenization of phase responses to macroscopic level

phase_characteristics rve;
// ... initialize rve with sub-phases ...
mat DR = eye(3,3);
double Time = 0.0, DTime = 0.01;
bool start = true;
double tnew_dt = 1.0;
umat_multi(rve, DR, Time, DTime, 3, 3, start, 0, tnew_dt, 1);
Parameters:
  • rve – Phase characteristics of the RVE containing sub-phases

  • DR – Rotation increment tensor

  • Time – Current simulation time

  • DTime – Time increment

  • ndi – Number of direct stress components

  • nshr – Number of shear stress components

  • start – Flag indicating if this is the first call (updated on output)

  • solver_type – Type of solver algorithm

  • tnew_dt – Suggested new time increment ratio

  • control – Control flag for time stepping

void Lt_Homogeneous_E(phase_characteristics &rve)

props[0] : Number of phases

props[1] : Number of the file NPhase[i].dat utilized

props[2] : Number of integration points in the 1 direction

props[3] : Number of integration points in the 2 direction

Compute tangent stiffness using the homogeneous (Voigt) scheme.

This scheme assumes uniform strain in all phases (Voigt hypothesis):

\[ \mathbf{L}^{eff} = \sum_i f_i \mathbf{L}_i \]
where \( f_i \) is the volume fraction and \( \mathbf{L}_i \) the stiffness of phase \( i \).

Parameters:

rve – Phase characteristics of the RVE

void DE_Homogeneous_E(phase_characteristics &rve)

Compute strain increment using the homogeneous (Voigt) scheme.

Parameters:

rve – Phase characteristics of the RVE

void Lt_Mori_Tanaka(phase_characteristics &rve, const int &n_matrix)

Compute tangent stiffness using the Mori-Tanaka scheme.

The Mori-Tanaka scheme accounts for inclusion interactions through the matrix strain field. The effective stiffness is:

\[ \mathbf{L}^{MT} = \mathbf{L}_0 + \sum_i f_i (\mathbf{L}_i - \mathbf{L}_0) : \mathbf{A}_i^{MT} \]

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

void DE_Mori_Tanaka(phase_characteristics &rve, const int &n_matrix)

Compute strain increment using the Mori-Tanaka scheme.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

void Lt_Mori_Tanaka_iso(phase_characteristics &rve, const int &n_matrix)

Compute tangent stiffness using the isotropized Mori-Tanaka scheme.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

void DE_Mori_Tanaka_iso(phase_characteristics &rve, const int &n_matrix)

Compute strain increment using the isotropized Mori-Tanaka scheme.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

void Lt_Self_Consistent(phase_characteristics &rve, const int &n_matrix, const bool &start, const int &max_iter = 1)

Compute tangent stiffness using the Self-Consistent scheme.

The Self-Consistent scheme determines the effective medium iteratively:

\[ \mathbf{L}^{SC} = \sum_i f_i \mathbf{L}_i : \mathbf{A}_i^{SC} \]
where the localization tensors depend on the (unknown) effective medium.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

  • start – Flag indicating if this is the first iteration

  • max_iter – Maximum number of iterations (default: 1)

void DE_Self_Consistent(phase_characteristics &rve, const int &n_matrix, const bool &start, const int &max_iter = 1)

Compute strain increment using the Self-Consistent scheme.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase

  • start – Flag indicating if this is the first iteration

  • max_iter – Maximum number of iterations (default: 1)

void Lt_Periodic_Layer(phase_characteristics &rve)

Compute tangent stiffness using the Periodic Layer scheme.

This scheme is used for periodic laminate composites where layers are stacked in the direction 1.

Parameters:

rve – Phase characteristics of the RVE

void dE_Periodic_Layer(phase_characteristics &rve, const int &n_matrix)

Compute strain increment using the Periodic Layer scheme.

Parameters:
  • rve – Phase characteristics of the RVE

  • n_matrix – Index of the matrix phase