OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Class for elastic homogenization. More...
#include <homogenize.h>
Public Member Functions | |
Homogenize () | |
Constructor. More... | |
~Homogenize (void) | |
Destructor. More... | |
void | voigt (FloatMatrix &PhaseMatrix) |
Parallel scheme of Voigt for any number of isotropic phases. More... | |
void | reuss (FloatMatrix &PhaseMatrix) |
Serial scheme of Reuss for any number of isotropic phases. More... | |
void | hashinShtrikmanWalpole (FloatMatrix &PhaseMatrix) |
Hashin-Shtrikman-Walpole lower and upper bounds for arbitrary number of isotropic phases. More... | |
void | moriTanaka (FloatMatrix &PhaseMatrix, int refRow) |
Mori-Tanaka homogenization method for spherical isotropic inclusions. More... | |
void | selfConsistent (FloatMatrix &PhaseMatrix) |
Self-consistent homogenization method of Hill and Budiansky for spherical isotropic inclusions. More... | |
void | herveZaoui (FloatMatrix &PhaseMatrix) |
Herve and Zaoui's homogenization scheme for n-spherical isotropic domains and arbitrary number of isotropic phases. More... | |
void | hirsch (FloatMatrix &PhaseMatrix, double chi) |
Hirsch's scheme combining Voigt and Reuss bounds. More... | |
void | hansen (FloatMatrix &PhaseMatrix) |
Hansen's model for a spherical inclusion in a spherical matrix, for Poisson's ratio 0.2 and two phases. More... | |
void | counto (FloatMatrix &PhaseMatrix) |
Counto's model for a prismatic inclusion in a prismatic matrix, two phases. More... | |
void | kusterToksoz (FloatMatrix &PhaseMatrix) |
Kuster-Toksoz model for two phases. More... | |
void | printYourself (int out=0) |
Print homogenized output. More... | |
void | ENuToKMu (const double E, const double nu, double &k, double &mu) |
Convert Young's modulus and Poisson's ratio to bulk and shear moduli, isotropic material. More... | |
void | kMuToENu (const double k, const double mu, double &E, double &nu) |
Convert bulk and shear moduli to Young's modulus and Poisson's ratio, isotropic material. More... | |
Public Attributes | |
double | E_hmg |
Effective Young's modulus or the lower bound. More... | |
double | E_hmg_2 |
Upper bound of Young's modulus if applicable. More... | |
double | nu_hmg |
Effective Poisson's ratio. More... | |
double | nu_hmg_2 |
Effective Poisson's ratio or the lower bound. More... | |
double | k_hmg |
Effective bulk modulus or the lower bound. More... | |
double | k_hmg_2 |
Upper bound of bulk modulus if applicable. More... | |
double | mu_hmg |
Effective shear modulus or the lower bound. More... | |
double | mu_hmg_2 |
Upper shear modulus if applicable. More... | |
Private Member Functions | |
double | lambda (double *PhaseMatrixKMu, int NumRows, double mu) |
Auxiliary function. More... | |
double | zeta (double k, double mu) |
Auxiliary function for Hashin-Shtrikman bounds. More... | |
double | gamma (FloatMatrix &SortedPhaseMatrix, double zeta) |
Auxiliary function. More... | |
void | checkVolFraction (FloatMatrix &PhaseMatrix) |
Check that the total volumetric fraction is the unity. More... | |
void | fillJ (FloatMatrix &J, double r, const FloatArray &mu, const FloatArray &k, int phase) |
Auxiliary function for Herve-Zaoui scheme. More... | |
void | fillL (FloatMatrix &L, double r, const FloatArray &mu, const FloatArray &k, int phase) |
Auxiliary function for Herve-Zaoui scheme. More... | |
Class for elastic homogenization.
Following homogenization estimates and bounds are implemented : Voigt, Reuss, Hirsch, Counto, Mori-Tanaka, Self-consitent, Hashin-Shtrikman-Walpole, Kuster-Toksoz, and Herve-Zaoui's n-layered spherical assemblage. Only isotropic materials and spherical inclusions are considered for the homogenization. Many schemes work with unlimited number of elastic phases.
Definition at line 50 of file homogenize.h.
oofem::Homogenize::Homogenize | ( | ) |
Constructor.
Definition at line 39 of file homogenize.C.
|
inline |
|
private |
Check that the total volumetric fraction is the unity.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
Definition at line 724 of file homogenize.C.
References oofem::FloatMatrix::giveNumberOfRows(), and OOFEM_ERROR.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), kusterToksoz(), moriTanaka(), reuss(), selfConsistent(), and voigt().
void oofem::Homogenize::counto | ( | FloatMatrix & | PhaseMatrix | ) |
Counto's model for a prismatic inclusion in a prismatic matrix, two phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase. The first row is an inclusion, the second row corresponds to the matrix. |
Definition at line 626 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, mu_hmg, nu_hmg, and OOFEM_ERROR.
void oofem::Homogenize::ENuToKMu | ( | const double | E, |
const double | nu, | ||
double & | k, | ||
double & | mu | ||
) |
Convert Young's modulus and Poisson's ratio to bulk and shear moduli, isotropic material.
Definition at line 691 of file homogenize.C.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), kusterToksoz(), moriTanaka(), reuss(), selfConsistent(), and voigt().
|
private |
Auxiliary function for Herve-Zaoui scheme.
Definition at line 739 of file homogenize.C.
Referenced by herveZaoui().
|
private |
Auxiliary function for Herve-Zaoui scheme.
Definition at line 748 of file homogenize.C.
Referenced by herveZaoui().
|
private |
Auxiliary function.
Definition at line 709 of file homogenize.C.
References oofem::FloatMatrix::giveNumberOfRows(), and zeta().
Referenced by hashinShtrikmanWalpole(), and herveZaoui().
void oofem::Homogenize::hansen | ( | FloatMatrix & | PhaseMatrix | ) |
Hansen's model for a spherical inclusion in a spherical matrix, for Poisson's ratio 0.2 and two phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase. The first row is an inclusion, the second row corresponds to the matrix. |
Definition at line 605 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, mu_hmg, nu_hmg, and OOFEM_ERROR.
void oofem::Homogenize::hashinShtrikmanWalpole | ( | FloatMatrix & | PhaseMatrix | ) |
Hashin-Shtrikman-Walpole lower and upper bounds for arbitrary number of isotropic phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase implemented according to J.G. Berryman: Mixture Theories for Rock Properties, Physics and Phase Relations, A Handbook of Physical Constants, Am. Geophys, 1995 |
Definition at line 95 of file homogenize.C.
References checkVolFraction(), E_hmg, E_hmg_2, ENuToKMu(), gamma(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, k_hmg_2, kMuToENu(), mu_hmg, mu_hmg_2, nu_hmg, nu_hmg_2, and zeta().
void oofem::Homogenize::herveZaoui | ( | FloatMatrix & | PhaseMatrix | ) |
Herve and Zaoui's homogenization scheme for n-spherical isotropic domains and arbitrary number of isotropic phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
Definition at line 344 of file homogenize.C.
References oofem::FloatArray::beProductOf(), oofem::FloatMatrix::beProductOf(), oofem::cbrt(), checkVolFraction(), E_hmg, ENuToKMu(), fillJ(), fillL(), gamma(), oofem::FloatMatrix::giveNumberOfColumns(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, N, nu_hmg, OOFEM_ERROR, OOFEM_WARNING, oofem::sqr(), oofem::FloatArray::times(), and oofem::FloatArray::zero().
Referenced by oofem::CemhydMatStatus::AnalyticHomogenizationConcrete().
void oofem::Homogenize::hirsch | ( | FloatMatrix & | PhaseMatrix, |
double | chi | ||
) |
Hirsch's scheme combining Voigt and Reuss bounds.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase. |
chi | a weight parameter between Reuss (=0) and Voigt (=1) bounds |
Definition at line 590 of file homogenize.C.
References E_hmg, k_hmg, kMuToENu(), mu_hmg, nu_hmg, reuss(), and voigt().
void oofem::Homogenize::kMuToENu | ( | const double | k, |
const double | mu, | ||
double & | E, | ||
double & | nu | ||
) |
Convert bulk and shear moduli to Young's modulus and Poisson's ratio, isotropic material.
Definition at line 697 of file homogenize.C.
Referenced by hashinShtrikmanWalpole(), herveZaoui(), hirsch(), kusterToksoz(), moriTanaka(), reuss(), selfConsistent(), and voigt().
void oofem::Homogenize::kusterToksoz | ( | FloatMatrix & | PhaseMatrix | ) |
Kuster-Toksoz model for two phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase. The first row is an inclusion, the second row corresponds to the matrix. |
Definition at line 648 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, nu_hmg, and OOFEM_ERROR.
|
private |
Auxiliary function.
void oofem::Homogenize::moriTanaka | ( | FloatMatrix & | PhaseMatrix, |
int | refRow | ||
) |
Mori-Tanaka homogenization method for spherical isotropic inclusions.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
refRow | row of the reference matrix phase (0 is the first) |
Definition at line 176 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, and nu_hmg.
Referenced by oofem::CemhydMatStatus::AnalyticHomogenizationConcrete(), and oofem::CemhydMatStatus::AnalyticHomogenizationPaste().
void oofem::Homogenize::printYourself | ( | int | out = 0 | ) |
void oofem::Homogenize::reuss | ( | FloatMatrix & | PhaseMatrix | ) |
Serial scheme of Reuss for any number of isotropic phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
Definition at line 66 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, and nu_hmg.
Referenced by hirsch().
void oofem::Homogenize::selfConsistent | ( | FloatMatrix & | PhaseMatrix | ) |
Self-consistent homogenization method of Hill and Budiansky for spherical isotropic inclusions.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
Definition at line 246 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, and nu_hmg.
Referenced by oofem::CemhydMatStatus::AnalyticHomogenizationPaste().
void oofem::Homogenize::voigt | ( | FloatMatrix & | PhaseMatrix | ) |
Parallel scheme of Voigt for any number of isotropic phases.
PhaseMatrix | matrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase |
Definition at line 43 of file homogenize.C.
References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, and nu_hmg.
Referenced by hirsch().
|
private |
Auxiliary function for Hashin-Shtrikman bounds.
Definition at line 704 of file homogenize.C.
Referenced by gamma(), and hashinShtrikmanWalpole().
double oofem::Homogenize::E_hmg |
Effective Young's modulus or the lower bound.
Definition at line 125 of file homogenize.h.
Referenced by oofem::CemhydMatStatus::AnalyticHomogenizationConcrete(), oofem::CemhydMatStatus::AnalyticHomogenizationPaste(), counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), hirsch(), kusterToksoz(), moriTanaka(), printYourself(), reuss(), selfConsistent(), and voigt().
double oofem::Homogenize::E_hmg_2 |
Upper bound of Young's modulus if applicable.
Definition at line 128 of file homogenize.h.
Referenced by hashinShtrikmanWalpole(), and printYourself().
double oofem::Homogenize::k_hmg |
Effective bulk modulus or the lower bound.
Definition at line 137 of file homogenize.h.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), hirsch(), kusterToksoz(), moriTanaka(), printYourself(), reuss(), selfConsistent(), and voigt().
double oofem::Homogenize::k_hmg_2 |
Upper bound of bulk modulus if applicable.
Definition at line 140 of file homogenize.h.
Referenced by hashinShtrikmanWalpole(), and printYourself().
double oofem::Homogenize::mu_hmg |
Effective shear modulus or the lower bound.
Definition at line 143 of file homogenize.h.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), hirsch(), kusterToksoz(), moriTanaka(), printYourself(), reuss(), selfConsistent(), and voigt().
double oofem::Homogenize::mu_hmg_2 |
Upper shear modulus if applicable.
Definition at line 146 of file homogenize.h.
Referenced by hashinShtrikmanWalpole(), and printYourself().
double oofem::Homogenize::nu_hmg |
Effective Poisson's ratio.
Definition at line 131 of file homogenize.h.
Referenced by oofem::CemhydMatStatus::AnalyticHomogenizationConcrete(), oofem::CemhydMatStatus::AnalyticHomogenizationPaste(), counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), hirsch(), kusterToksoz(), moriTanaka(), printYourself(), reuss(), selfConsistent(), and voigt().
double oofem::Homogenize::nu_hmg_2 |
Effective Poisson's ratio or the lower bound.
Definition at line 134 of file homogenize.h.
Referenced by hashinShtrikmanWalpole(), and printYourself().