|
OOFEM 3.0
|
#include <homogenize.h>
Public Member Functions | |
| Homogenize () | |
| Constructor. | |
| ~Homogenize (void) | |
| Destructor. | |
| void | voigt (FloatMatrix &PhaseMatrix) |
| void | reuss (FloatMatrix &PhaseMatrix) |
| void | hashinShtrikmanWalpole (FloatMatrix &PhaseMatrix) |
| void | moriTanaka (FloatMatrix &PhaseMatrix, int refRow) |
| void | selfConsistent (FloatMatrix &PhaseMatrix) |
| void | herveZaoui (FloatMatrix &PhaseMatrix) |
| void | hirsch (FloatMatrix &PhaseMatrix, double chi) |
| void | hansen (FloatMatrix &PhaseMatrix) |
| void | counto (FloatMatrix &PhaseMatrix) |
| void | kusterToksoz (FloatMatrix &PhaseMatrix) |
| void | printYourself (int out=0) |
| 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. | |
| 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. | |
Public Attributes | |
| double | E_hmg |
| Effective Young's modulus or the lower bound. | |
| double | E_hmg_2 |
| Upper bound of Young's modulus if applicable. | |
| double | nu_hmg |
| Effective Poisson's ratio. | |
| double | nu_hmg_2 |
| Effective Poisson's ratio or the lower bound. | |
| double | k_hmg |
| Effective bulk modulus or the lower bound. | |
| double | k_hmg_2 |
| Upper bound of bulk modulus if applicable. | |
| double | mu_hmg |
| Effective shear modulus or the lower bound. | |
| double | mu_hmg_2 |
| Upper shear modulus if applicable. | |
Private Member Functions | |
| double | lambda (double *PhaseMatrixKMu, int NumRows, double mu) |
| Auxiliary function. | |
| double | zeta (double k, double mu) |
| Auxiliary function for Hashin-Shtrikman bounds. | |
| double | gamma (FloatMatrix &SortedPhaseMatrix, double zeta) |
| Auxiliary function. | |
| void | checkVolFraction (FloatMatrix &PhaseMatrix) |
| void | fillJ (FloatMatrix &J, double r, const FloatArray &mu, const FloatArray &k, int phase) |
| Auxiliary function for Herve-Zaoui scheme. | |
| void | fillL (FloatMatrix &L, double r, const FloatArray &mu, const FloatArray &k, int phase) |
| Auxiliary function for Herve-Zaoui scheme. | |
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 |
Destructor.
Definition at line 58 of file homogenize.h.
|
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 719 of file homogenize.C.
References oofem::FloatMatrix::giveNumberOfRows(), and OOFEM_ERROR.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), kusterToksoz(), lambda(), 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 621 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 686 of file homogenize.C.
References E.
Referenced by counto(), hansen(), hashinShtrikmanWalpole(), herveZaoui(), kusterToksoz(), moriTanaka(), reuss(), selfConsistent(), and voigt().
|
private |
Auxiliary function for Herve-Zaoui scheme.
Definition at line 733 of file homogenize.C.
Referenced by herveZaoui(), and lambda().
|
private |
Auxiliary function for Herve-Zaoui scheme.
Definition at line 742 of file homogenize.C.
Referenced by herveZaoui(), and lambda().
|
private |
Auxiliary function.
Definition at line 705 of file homogenize.C.
References gamma(), oofem::FloatMatrix::giveNumberOfRows(), and zeta().
Referenced by gamma(), hashinShtrikmanWalpole(), herveZaoui(), and lambda().
| 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 600 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 93 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 341 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::FloatMatrix::resize(), oofem::FloatMatrix::setSubMatrix(), 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 585 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 692 of file homogenize.C.
References E.
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 643 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.
References checkVolFraction(), fillJ(), fillL(), gamma(), and zeta().
| 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 174 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 65 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 243 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 699 of file homogenize.C.
Referenced by gamma(), hashinShtrikmanWalpole(), and lambda().
| 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().