OFELI's Logo

An Object Oriented Finite Element Library

WaterPorous2D Class Reference

To solve water flow equations in porous media (1-D) More...

#include <WaterPorous2D.h>

+ Inheritance diagram for WaterPorous2D:

Public Member Functions

 WaterPorous2D ()
 Default Constructor. More...
 
 WaterPorous2D (Mesh &ms)
 Constructor. More...
 
 ~WaterPorous2D ()
 Destructor.
 
void setCoef (real_t cw, real_t phi, real_t rho, real_t Kx, real_t Ky, real_t mu)
 Set constant coefficients. More...
 
void Mass ()
 Add mass term contribution the element matrix.
 
void Mobility ()
 Add mobility term contribution the element matrix.
 
void BodyRHS (const Vect< real_t > &bf)
 Add source right-hand side term to right-hand side. More...
 
void BoundaryRHS (const Vect< real_t > &sf)
 Add boundary right-hand side term to right-hand side. More...
 
- Public Member Functions inherited from Equa_Porous< 3, 3, 2, 2 >
 Equa_Porous ()
 Default constructor. More...
 
virtual ~Equa_Porous ()
 Destructor.
 
virtual void Mobility ()
 Add mobility term to the 0-th order element matrix.
 
virtual void Mass ()
 Add porosity term to the 1-st order element matrix.
 
virtual void BodyRHS (const Vect< real_t > &bf)
 Add source right-hand side term to right-hand side. More...
 
virtual void BoundaryRHS (const Vect< real_t > &sf)
 Add boundary right-hand side term to right-hand side. More...
 
void build ()
 Build the linear system of equations. More...
 
void build (TimeStepping &s)
 Build the linear system of equations. More...
 
void build (EigenProblemSolver &e)
 Build the linear system for an eigenvalue problem. More...
 
int run ()
 Run the equation. More...
 
void Mu (const string &exp)
 Set viscosity given by an algebraic expression.
 
- Public Member Functions inherited from Equation< NEN_, NEE_, NSN_, NSE_ >
 Equation ()
 
 Equation (Mesh &mesh)
 Constructor with mesh instance. More...
 
 Equation (Mesh &mesh, Vect< real_t > &u)
 Constructor with mesh instance and solution vector. More...
 
 Equation (Mesh &mesh, Vect< real_t > &u, real_t &init_time, real_t &final_time, real_t &time_step)
 Constructor with mesh instance, matrix and right-hand side. More...
 
 ~Equation ()
 Destructor.
 
void updateBC (const Element &el, const Vect< real_t > &bc)
 Update Right-Hand side by taking into account essential boundary conditions. More...
 
void DiagBC (DOFSupport dof_type=NODE_DOF, int dof=0)
 Update element matrix to impose bc by diagonalization technique. More...
 
void LocalNodeVector (Vect< real_t > &b)
 Localize Element Vector from a Vect instance. More...
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEE_ > &be)
 Localize Element Vector from a Vect instance. More...
 
void SideNodeVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &bs)
 Localize Side Vector from a Vect instance. More...
 
void SideSideVector (const Vect< real_t > &b, std::valarray< real_t > &bs)
 Localize Side Vector from a Vect instance. More...
 
void ElementNodeVectorSingleDOF (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be)
 Localize Element Vector from a Vect instance. More...
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be, int dof)
 Localize Element Vector from a Vect instance. More...
 
void ElementSideVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &be)
 Localize Element Vector from a Vect instance. More...
 
void ElementVector (const Vect< real_t > &b, DOFSupport dof_type=NODE_DOF, int flag=0)
 Localize Element Vector. More...
 
void SideVector (const Vect< real_t > &b, std::valarray< real_t > &sb)
 Localize Side Vector. More...
 
void ElementNodeCoordinates ()
 Localize coordinates of element nodes. More...
 
void SideNodeCoordinates ()
 Localize coordinates of side nodes. More...
 
void ElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one. More...
 
void ElementAssembly (BMatrix< real_t > &A)
 Assemble element matrix into global one. More...
 
void ElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one. More...
 
void ElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one. More...
 
void ElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one. More...
 
void ElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one. More...
 
void DGElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation. More...
 
void DGElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation. More...
 
void DGElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation. More...
 
void DGElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation. More...
 
void DGElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation. More...
 
void SideAssembly (Matrix< real_t > *A)
 Assemble side (edge or face) matrix into global one. More...
 
void SideAssembly (SkSMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one. More...
 
void SideAssembly (SkMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one. More...
 
void SideAssembly (SpMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one. More...
 
void ElementAssembly (Vect< real_t > &v)
 Assemble element vector into global one. More...
 
void SideAssembly (Vect< real_t > &v)
 Assemble side (edge or face) vector into global one. More...
 
void AxbAssembly (const Element &el, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of element matrix by element vector into global vector. More...
 
void AxbAssembly (const Side &sd, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of side matrix by side vector into global vector. More...
 
size_t getNbNodes () const
 Return number of element nodes.
 
size_t getNbEq () const
 Return number of element equations.
 
real_t setMaterialProperty (const string &exp, const string &prop)
 Define a material property by an algebraic expression. More...
 
- Public Member Functions inherited from Equa
 Equa ()
 Default constructor.
 
virtual ~Equa ()
 Destructor.
 
void setMesh (Mesh &m)
 Define mesh and renumber DOFs after removing imposed ones.
 
MeshgetMesh () const
 Return reference to Mesh instance. More...
 
LinearSolver< real_t > & getLinearSolver ()
 Return reference to linear solver instance.
 
Matrix< real_t > * getMatrix () const
 Return pointer to matrix.
 
void setSolver (Iteration ls, Preconditioner pc=IDENT_PREC)
 Choose solver for the linear system. More...
 
void setLinearSolver (Iteration ls, Preconditioner pc=IDENT_PREC)
 Choose solver for the linear system. More...
 
void setMatrixType (int t)
 Choose type of matrix. More...
 
int solveLinearSystem (Matrix< real_t > *A, Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given matrix and right-hand side. More...
 
int solveLinearSystem (Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given right-hand side. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Equa_Porous< 3, 3, 2, 2 >
void setMaterial ()
 Set material properties.
 

Detailed Description

To solve water flow equations in porous media (1-D)

To solve water flow equations in porous media (2-D)

Class WaterPorous2D solves the fluid flow equations of water or any incompressible or slightly compressible fluid in a porous medium in two-dimensional configurations.

Porous media flows are modelled here by the Darcy law. The water, or any other fluid is considered as slightly compressible, i.e., its compressibility coefficient is constant.

Space discretization uses the P1 (2-Node line) finite element method. Time integration uses class TimeStepping that provides various well known time integration schemes.

Class WaterPorous2D solves the fluid flow equations of water or any incompressible or slightly compressible fluid in a porous medium in two-dimensional configurations.

Porous media flows are modelled here by the Darcy law. The water, or any other fluid is considered as slightly compressible, i.e., its compressibility coefficient is constant.

Space discretization uses the P1 (3-Node triangle) finite element method. Time integration uses class TimeStepping that provides various well known time integration schemes.

Constructor & Destructor Documentation

◆ WaterPorous2D() [1/2]

Default Constructor.

Constructs an empty equation.

◆ WaterPorous2D() [2/2]

WaterPorous2D ( Mesh ms)

Constructor.

This constructor uses mesh and reservoir information

Parameters
[in]msMesh instance

Member Function Documentation

◆ BodyRHS()

void BodyRHS ( const Vect< real_t > &  bf)
virtual

Add source right-hand side term to right-hand side.

Parameters
[in]bfVector containing source at nodes.

Reimplemented from Equa_Porous< 3, 3, 2, 2 >.

◆ BoundaryRHS()

void BoundaryRHS ( const Vect< real_t > &  sf)
virtual

Add boundary right-hand side term to right-hand side.

Parameters
[in]sfVector containing source at nodes.

Reimplemented from Equa_Porous< 3, 3, 2, 2 >.

◆ setCoef()

void setCoef ( real_t  cw,
real_t  phi,
real_t  rho,
real_t  Kx,
real_t  Ky,
real_t  mu 
)

Set constant coefficients.

Parameters
[in]cwCompressibility coefficient
[in]phiPorosity
[in]rhoDensity
[in]Kxx-Absolute permeability
[in]Kyy-Absolute permeability
[in]muViscosity





Copyright © 1998-2022 Rachid Touzani