ASL
0.1.7
Advanced Simulation Library
|
Numerical method which computes homogenious isotropic poro-elasticity equation. More...
#include <aslFDPoroElasticity.h>
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... | |
![]() | |
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 |
![]() | |
virtual | ~NumMethod () |
Additional Inherited Members | |
![]() | |
typedef SPDataWithGhostNodesACLData | Data |
typedef acl::VectorOfElements | Param |
![]() | |
const VectorTemplate * | vectorTemplate |
![]() | |
std::unique_ptr< acl::Kernel > | kernel |
Data | displacementData |
Data | displacementInternalData |
Param | bulkModulus |
Param | shearModulus |
Param | force |
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
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.
asl::FDPoroElasticity::FDPoroElasticity | ( | ) |
asl::FDPoroElasticity::FDPoroElasticity | ( | Data | d, |
Data | pl, | ||
Param | bM, | ||
Param | sM, | ||
Param | k, | ||
const VectorTemplate * | vT | ||
) |
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 |
asl::FDPoroElasticity::~FDPoroElasticity | ( | ) |
|
virtual |
Executes the numerical procedure.
Implements asl::ElasticityCommonA.
|
inline |
Definition at line 159 of file aslFDPoroElasticity.h.
|
inline |
Definition at line 154 of file aslFDPoroElasticity.h.
|
virtual |
Builds the necesery internal data and kernels.
Implements asl::ElasticityCommonA.
void asl::FDPoroElasticity::setNSubsteps | ( | unsigned int | n | ) |
defaul value 10