ASL 0.1.7
Advanced Simulation Library
Loading...
Searching...
No Matches
asl::FDPoroElasticity Class Reference

Numerical method which computes homogenious isotropic poro-elasticity equation. More...

#include <aslFDPoroElasticity.h>

Inheritance diagram for asl::FDPoroElasticity:
Collaboration diagram for asl::FDPoroElasticity:

Public Member Functions

 FDPoroElasticity ()
 FDPoroElasticity (Data d, Data pl, Param bM, Param sM, Param k, const VectorTemplate *vT)
 ~FDPoroElasticity ()
virtual void init ()
 Builds the necesery internal data and kernels.
virtual void execute ()
 Executes the numerical procedure.
Data getPressureData () const
Data getLiquidPressureData () const
void setNSubsteps (unsigned int n)
 defaul value 10
 FDPoroElasticity ()
 FDPoroElasticity (Data d, Data pl, Param bM, Param sM, Param k, const VectorTemplate *vT)
 ~FDPoroElasticity ()
virtual void init ()
 Builds the necesery internal data and kernels.
virtual void execute ()
 Executes the numerical procedure.
Data getPressureData () const
Data getLiquidPressureData () const
void setNSubsteps (unsigned int n)
 defaul value 10
Public Member Functions inherited from asl::ElasticityCommonA
 ElasticityCommonA ()
 ElasticityCommonA (Data d, Param bM, Param sM, const VectorTemplate *vT)
 ~ElasticityCommonA ()
void setVectorTemplate (const VectorTemplate *vT)
VectorTemplate getVectorTemplate ()
void setForce (Param f)
Data getDisplacementData () const
Data getDisplacementInternalData () const
const Param getBulkModulus () const
const Param getShearModulus () const
 ElasticityCommonA ()
 ElasticityCommonA (Data d, Param bM, Param sM, const VectorTemplate *vT)
 ~ElasticityCommonA ()
void setVectorTemplate (const VectorTemplate *vT)
VectorTemplate getVectorTemplate ()
void setForce (Param f)
Data getDisplacementData () const
Data getDisplacementInternalData () const
const Param getBulkModulus () const
const Param getShearModulus () const
Public Member Functions inherited from asl::NumMethod
virtual ~NumMethod ()
virtual ~NumMethod ()

Additional Inherited Members

Public Types inherited from asl::ElasticityCommonA
typedef SPDataWithGhostNodesACLData Data
typedef acl::VectorOfElements Param
typedef SPDataWithGhostNodesACLData Data
typedef acl::VectorOfElements Param
Public Attributes inherited from asl::ElasticityCommonA
const VectorTemplatevectorTemplate
Protected Attributes inherited from asl::ElasticityCommonA
std::unique_ptr< acl::Kernelkernel
Data displacementData
Data displacementInternalData
Param bulkModulus
Param shearModulus
Param force

Detailed Description

Numerical method which computes homogenious isotropic poro-elasticity equation.

The classic poroelastic equations were originally developed by Biot (1941) to represent biphasic soil consolidation. The equations can be written in the following form:

\[ (K+\mu/3)\nabla_j \nabla_k u_k+ \mu \Delta u_j - a \nabla_j p = - (\rho_s-\rho_f)g_j \]

\[ a\nabla_i\dot u_i+ \frac{1}{S} \dot p = \nabla_i k \nabla_i p, \]

where

  • \(\vec u\) is the displacement vector,
  • \( p \) the interstitial pressure,
  • \( a \) the ratio of fluid volume extracted to volume change of the tissue under compression,
  • \(\rho_s\) the solid fraction density,
  • \(\rho_f\) the fluid density,
  • \(\vec g \) the gravitational vector,
  • \( 1/S \) the amount of fluid which can be forced into the tissue under constant volume,
  • \( k \) the hydraulic conductivity,
  • \(K\) is the bulk modulus,
  • \(\mu\) is the shear modulus,.

In order to solve the first equation we will introduce a fictisionus time \( \tau \):

\[ \partial_\tau u = (K+\mu/3)\nabla_j \nabla_k u_k+ \mu \Delta u_j - a \nabla_j p + (\rho_s-\rho_f)g_j \]

\[ a\partial_t\nabla_i u_i+ \frac{1}{S} \partial_t p = \nabla_i k \nabla_i p, \]

This implementation is aided to improove stability for incompressible materials. Let us reformulate the first eqation by the following way:

\[ \partial_\tau u = \mu \Delta u_j - \nabla_j \tilde p - a\nabla_j p + (\rho_s-\rho_f)g_j, \]

\[ \tilde p = -(K+\mu/3) \nabla_k u_k. \]

then the second eqation will turn to:

\[ \partial_t p = \frac{aS}{K+\mu/3}\partial_t\tilde p + S\nabla_i k \nabla_i p, \]

The equation for \(\tilde p\) leads to an instability for low values of the Poisson ration (for nearly incompressible materials). Therefore the last equation we would like to replace by a relaxation one:

\[ \partial_\tau \tilde p = - w\left( (K+\mu/3)\nabla_k u_k + \tilde p\right), \]

where \( w \) is a relaxation parameter.

Let's return to single time variable. Two time steps are related as follows \( \delta_t = N \delta_\tau \). Than \( \partial_\tau = N\partial_t \). The resulting set of equations is:

\[ \partial_\tau u = \mu \Delta u_j - \nabla_j \tilde p - a\nabla_j p + (\rho_s-\rho_f)g_j, \]

\[ \partial_\tau \tilde p = - w\left( (K+\mu/3)\nabla_k u_k + \tilde p\right), \]

\[ \partial_\tau p = \frac{aS}{K+\mu/3}\partial_\tau\tilde p + \frac{Sk}{N}\Delta p, \]

Definition at line 82 of file aslFDPoroElasticity.h.

Constructor & Destructor Documentation

◆ FDPoroElasticity() [1/4]

asl::FDPoroElasticity::FDPoroElasticity ( )

◆ FDPoroElasticity() [2/4]

asl::FDPoroElasticity::FDPoroElasticity ( Data d,
Data pl,
Param bM,
Param sM,
Param k,
const VectorTemplate * vT )
Parameters
dis a displacement field
plis a pressure of liquid field
bMis the bulk modulus
sMis the shear modulus
kis hydraulic conductivity
vTis a vector template

◆ ~FDPoroElasticity() [1/2]

asl::FDPoroElasticity::~FDPoroElasticity ( )

◆ FDPoroElasticity() [3/4]

asl::FDPoroElasticity::FDPoroElasticity ( )

◆ FDPoroElasticity() [4/4]

asl::FDPoroElasticity::FDPoroElasticity ( Data d,
Data pl,
Param bM,
Param sM,
Param k,
const VectorTemplate * vT )
Parameters
dis a displacement field
plis a pressure of liquid field
bMis the bulk modulus
sMis the shear modulus
kis hydraulic conductivity
vTis a vector template

◆ ~FDPoroElasticity() [2/2]

asl::FDPoroElasticity::~FDPoroElasticity ( )

Member Function Documentation

◆ execute() [1/2]

virtual void asl::FDPoroElasticity::execute ( )
virtual

Executes the numerical procedure.

Implements asl::ElasticityCommonA.

◆ execute() [2/2]

virtual void asl::FDPoroElasticity::execute ( )
virtual

Executes the numerical procedure.

Implements asl::ElasticityCommonA.

◆ getLiquidPressureData() [1/2]

ElasticityCommonA::Data asl::FDPoroElasticity::getLiquidPressureData ( ) const
inline

Definition at line 159 of file aslFDPoroElasticity.h.

◆ getLiquidPressureData() [2/2]

Data asl::FDPoroElasticity::getLiquidPressureData ( ) const
inline

◆ getPressureData() [1/2]

ElasticityCommonA::Data asl::FDPoroElasticity::getPressureData ( ) const
inline

Definition at line 154 of file aslFDPoroElasticity.h.

◆ getPressureData() [2/2]

Data asl::FDPoroElasticity::getPressureData ( ) const
inline

◆ init() [1/2]

virtual void asl::FDPoroElasticity::init ( )
virtual

Builds the necesery internal data and kernels.

Implements asl::ElasticityCommonA.

◆ init() [2/2]

virtual void asl::FDPoroElasticity::init ( )
virtual

Builds the necesery internal data and kernels.

Implements asl::ElasticityCommonA.

◆ setNSubsteps() [1/2]

void asl::FDPoroElasticity::setNSubsteps ( unsigned int n)

defaul value 10

◆ setNSubsteps() [2/2]

void asl::FDPoroElasticity::setNSubsteps ( unsigned int n)

defaul value 10


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