OOFEM 3.0
Loading...
Searching...
No Matches
oofem::Homogenize Class Reference

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

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

◆ Homogenize()

oofem::Homogenize::Homogenize ( )

Constructor.

Definition at line 39 of file homogenize.C.

◆ ~Homogenize()

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

Destructor.

Definition at line 58 of file homogenize.h.

Member Function Documentation

◆ checkVolFraction()

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

◆ counto()

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 621 of file homogenize.C.

References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, mu_hmg, nu_hmg, and OOFEM_ERROR.

◆ ENuToKMu()

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

◆ fillJ()

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 733 of file homogenize.C.

Referenced by herveZaoui(), and lambda().

◆ fillL()

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 742 of file homogenize.C.

Referenced by herveZaoui(), and lambda().

◆ gamma()

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

◆ hansen()

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 600 of file homogenize.C.

References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, mu_hmg, nu_hmg, and OOFEM_ERROR.

◆ hashinShtrikmanWalpole()

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

◆ herveZaoui()

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

◆ hirsch()

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 585 of file homogenize.C.

References E_hmg, k_hmg, kMuToENu(), mu_hmg, nu_hmg, reuss(), and voigt().

◆ kMuToENu()

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

◆ kusterToksoz()

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 643 of file homogenize.C.

References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, nu_hmg, and OOFEM_ERROR.

◆ lambda()

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

Auxiliary function.

References checkVolFraction(), fillJ(), fillL(), gamma(), and zeta().

◆ moriTanaka()

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

◆ printYourself()

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

◆ reuss()

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 65 of file homogenize.C.

References checkVolFraction(), E_hmg, ENuToKMu(), oofem::FloatMatrix::giveNumberOfRows(), k_hmg, kMuToENu(), mu_hmg, and nu_hmg.

Referenced by hirsch().

◆ selfConsistent()

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

◆ voigt()

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

◆ zeta()

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

Auxiliary function for Hashin-Shtrikman bounds.

Definition at line 699 of file homogenize.C.

Referenced by gamma(), hashinShtrikmanWalpole(), and lambda().

Member Data Documentation

◆ E_hmg

◆ E_hmg_2

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

◆ k_hmg

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

◆ k_hmg_2

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

◆ mu_hmg

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

◆ mu_hmg_2

double oofem::Homogenize::mu_hmg_2

Upper shear modulus if applicable.

Definition at line 146 of file homogenize.h.

Referenced by hashinShtrikmanWalpole(), and printYourself().

◆ nu_hmg

◆ nu_hmg_2

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-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011