svMultiPhysics
Loading...
Searching...
No Matches
Functions
darcy Namespace Reference

Pressure-based Darcy flow in porous media. More...

Functions

void validate_material_properties (const dmnType &domain)
 
void validate_element_support (const mshType &mesh)
 
void b_darcy (ComMod &com_mod, const int eNoN, const double w, const Vector< double > &N, const double h, Array< double > &lR)
 
void construct_darcy (ComMod &com_mod, const mshType &lM, const SolutionStates &solutions)
 
void darcy_2d (ComMod &com_mod, const int eNoN, const double w, const Vector< double > &N, const Array< double > &Nx, const Array< double > &al, const Array< double > &yl, Array< double > &lR, Array3< double > &lK)
 
void darcy_3d (ComMod &com_mod, const int eNoN, const double w, const Vector< double > &N, const Array< double > &Nx, const Array< double > &al, const Array< double > &yl, Array< double > &lR, Array3< double > &lK)
 

Detailed Description

Pressure-based Darcy flow in porous media.

This namespace implements the Darcy equation for perfusion of porous media with intrinsic dimensions 2 and 3. Material coefficients are homogeneous within each solver domain, permeability is isotropic, and Stokes-flow assumptions apply. The assembled pressure strong form is

\[ \rho \beta \frac{\partial p}{\partial t} - \nabla \cdot \left(\frac{\rho K}{\mu}\nabla p\right) = \rho s. \]

This discretizes the pressure-only strong form. Velocity is not an independent unknown. After pressure is solved, Darcy velocity is evaluated as the derived field

\[ \boldsymbol{q} = -\frac{K}{\mu}\nabla p. \]

The model quantities and their admissible ranges are:

Darcy flux output
On supported two- and three-dimensional meshes, the pressure gradient is reconstructed in the mesh coordinates and the derived Darcy flux is

\[ \boldsymbol{q} = -\frac{K}{\mu}\nabla p. \]

Cardiovascular porous-flow context
The following works describe future multi-compartment and microcirculation model extensions than the single-compartment formulation implemented here:
  • C. Michler et al., "A computationally efficient framework for the simulation of cardiac perfusion using a multi-compartment Darcy porous-media flow model," DOI 10.1002/cnm.2520.
  • G. Montino Pelagi et al., "Modeling cardiac microcirculation for the simulation of coronary flow and 3D myocardial perfusion," DOI 10.1007/s10237-024-01873-z.

Function Documentation

◆ b_darcy()

void darcy::b_darcy ( ComMod &  com_mod,
const int  eNoN,
const double  w,
const Vector< double > &  N,
const double  h,
Array< double > &  lR 
)

Assemble a Darcy boundary contribution into the element residual.

Parameters
[in]com_modCommon solver state retained for the common assembly interface.
[in]eNoNNumber of element nodes.
[in]wWeighted boundary quadrature measure.
[in]NShape-function values at the quadrature point.
[in]hPrescribed boundary flux contribution.
[in,out]lRElement residual.

◆ construct_darcy()

void darcy::construct_darcy ( ComMod &  com_mod,
const mshType &  lM,
const SolutionStates &  solutions 
)

Assemble Darcy volume contributions for all supported elements in a mesh.

Parameters
[in,out]com_modCommon solver state and assembly interface.
[in]lMMesh whose Darcy elements are assembled.
[in]solutionsSolution states used for element-local fields.

◆ darcy_2d()

void darcy::darcy_2d ( ComMod &  com_mod,
const int  eNoN,
const double  w,
const Vector< double > &  N,
const Array< double > &  Nx,
const Array< double > &  al,
const Array< double > &  yl,
Array< double > &  lR,
Array3< double > &  lK 
)

Assemble the residual and tangent for an intrinsic two-dimensional element.

Parameters
[in]com_modCommon solver state.
[in]eNoNNumber of element nodes.
[in]wWeighted volume quadrature measure.
[in]NShape-function values at the quadrature point.
[in]NxMapped spatial shape-function derivatives.
[in]alElement-local pressure rates.
[in]ylElement-local pressure state.
[in,out]lRElement residual.
[in,out]lKElement tangent matrix.

◆ darcy_3d()

void darcy::darcy_3d ( ComMod &  com_mod,
const int  eNoN,
const double  w,
const Vector< double > &  N,
const Array< double > &  Nx,
const Array< double > &  al,
const Array< double > &  yl,
Array< double > &  lR,
Array3< double > &  lK 
)

Assemble the residual and tangent for an intrinsic three-dimensional element.

Parameters
[in]com_modCommon solver state.
[in]eNoNNumber of element nodes.
[in]wWeighted volume quadrature measure.
[in]NShape-function values at the quadrature point.
[in]NxMapped spatial shape-function derivatives.
[in]alElement-local pressure rates.
[in]ylElement-local pressure state.
[in,out]lRElement residual.
[in,out]lKElement tangent matrix.

◆ validate_element_support()

void darcy::validate_element_support ( const mshType &  mesh)

Reject mesh types that Darcy assembly and flux output do not implement.

Parameters
[in]meshMesh whose element type is checked.
Note
mshType::lFib denotes a one-dimensional mesh embedded in the ambient geometry, not a myocardial material fiber direction. Darcy is currently limited to intrinsic dimensions 2 and 3.

◆ validate_material_properties()

void darcy::validate_material_properties ( const dmnType &  domain)

Validate the configured Darcy material coefficients for a domain.

Parameters
[in]domainSolver domain whose material properties are checked.