asl::FDPoroElasticity Class Reference
Physics » Elasticity | Numerics » Numerical Methods

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

`#include <aslFDPoroElasticity.h>`

Inheritance diagram for asl::FDPoroElasticity:
[legend]
Collaboration diagram for asl::FDPoroElasticity:
[legend]

## 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. More...
virtual void | execute ()
| Executes the numerical procedure. More...
Data | getPressureData () const
Data | getLiquidPressureData () const
void | setNSubsteps (unsigned int n)
| defaul value 10 More...
| 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. More...
virtual void | execute ()
| Executes the numerical procedure. More...
Data | getPressureData () const
Data | getLiquidPressureData () const
void | setNSubsteps (unsigned int n)
| defaul value 10 More...
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 VectorTemplate * | vectorTemplate
Protected Attributes inherited from asl::ElasticityCommonA
std::unique_ptr< acl::Kernel > | kernel
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

  d | is a displacement field
  pl | is a pressure of liquid field
  bM | is the bulk modulus
  sM | is the shear modulus
  k | is hydraulic conductivity
  vT | is 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

  d | is a displacement field
  pl | is a pressure of liquid field
  bM | is the bulk modulus
  sM | is the shear modulus
  k | is hydraulic conductivity
  vT | is 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 file:

- /build/asl-1Fw6fH/asl-0.1.7/debian/tmp/usr/include/ASL/num/aslFDPoroElasticity.h