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