|
ASL
0.1.6
Advanced Simulation Library
|
Numerical method which computes homogenious isotropic poro-elasticity equation. More...
#include <aslFDPoroElasticity.h>
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 |
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 | ( | ) |
| 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.
|
virtual |
Executes the numerical procedure.
Implements asl::ElasticityCommonA.
|
inline |
Definition at line 159 of file aslFDPoroElasticity.h.
|
inline |
|
inline |
|
inline |
Definition at line 154 of file aslFDPoroElasticity.h.
|
virtual |
Builds the necesery internal data and kernels.
Implements asl::ElasticityCommonA.
|
virtual |
Builds the necesery internal data and kernels.
Implements asl::ElasticityCommonA.
| void asl::FDPoroElasticity::setNSubsteps | ( | unsigned int | n | ) |
defaul value 10
| void asl::FDPoroElasticity::setNSubsteps | ( | unsigned int | n | ) |
defaul value 10
1.8.9.1