OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::Homogenize Class Reference

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...
 

Detailed Description

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.

Constructor & Destructor Documentation

oofem::Homogenize::Homogenize ( )

Constructor.

Definition at line 39 of file homogenize.C.

oofem::Homogenize::~Homogenize ( void  )
inline

Destructor.

Definition at line 58 of file homogenize.h.

References E.

Member Function Documentation

void oofem::Homogenize::checkVolFraction ( FloatMatrix PhaseMatrix)
private

Check that the total volumetric fraction is the unity.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix 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().

void oofem::Homogenize::fillJ ( FloatMatrix J,
double  r,
const FloatArray mu,
const FloatArray k,
int  phase 
)
private

Auxiliary function for Herve-Zaoui scheme.

Definition at line 739 of file homogenize.C.

Referenced by herveZaoui().

void oofem::Homogenize::fillL ( FloatMatrix L,
double  r,
const FloatArray mu,
const FloatArray k,
int  phase 
)
private

Auxiliary function for Herve-Zaoui scheme.

Definition at line 748 of file homogenize.C.

Referenced by herveZaoui().

double oofem::Homogenize::gamma ( FloatMatrix SortedPhaseMatrix,
double  zeta 
)
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.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase.
chia 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.

Parameters
PhaseMatrixmatrix 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.

double oofem::Homogenize::lambda ( double *  PhaseMatrixKMu,
int  NumRows,
double  mu 
)
private

Auxiliary function.

void oofem::Homogenize::moriTanaka ( FloatMatrix PhaseMatrix,
int  refRow 
)

Mori-Tanaka homogenization method for spherical isotropic inclusions.

Parameters
PhaseMatrixmatrix containing in each row the volume fraction, the Young modulus and the Poisson ratio for each phase
refRowrow 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)

Print homogenized output.

Parameters
out0 (default) prints homogenized values or a lower bound, 1 prints an upper bound

Definition at line 681 of file homogenize.C.

References E_hmg, E_hmg_2, k_hmg, k_hmg_2, mu_hmg, mu_hmg_2, nu_hmg, and nu_hmg_2.

void oofem::Homogenize::reuss ( FloatMatrix PhaseMatrix)

Serial scheme of Reuss for any number of isotropic phases.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix 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.

Parameters
PhaseMatrixmatrix 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().

double oofem::Homogenize::zeta ( double  k,
double  mu 
)
private

Auxiliary function for Hashin-Shtrikman bounds.

Definition at line 704 of file homogenize.C.

Referenced by gamma(), and hashinShtrikmanWalpole().

Member Data Documentation

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_2

Effective Poisson's ratio or the lower bound.

Definition at line 134 of file homogenize.h.

Referenced by hashinShtrikmanWalpole(), and printYourself().


The documentation for this class was generated from the following files:

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:36 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011