Builds finite element arrays for incompressible Navier-Stokes equations in 2-D domains using Q1/P0 element and a penaly formulation for the incompressibility condition. More...


Public Member Functions | |
NSP2DQ41 () | |
Default Constructor. More... | |
NSP2DQ41 (const Element *el) | |
Constructor using Element data. More... | |
NSP2DQ41 (const Side *sd) | |
Constructor using Side data. More... | |
NSP2DQ41 (const Element *el, const Vect< real_t > &u, const real_t &time=0.) | |
Constructor using element and previous time data. More... | |
NSP2DQ41 (const Side *sd, const Vect< real_t > &u, const real_t &time=0.) | |
Constructor using side and previous time data. More... | |
~NSP2DQ41 () | |
Destructor. | |
void | Viscosity (real_t visc) |
Define constant viscosity. | |
void | Density (real_t dens) |
Define constant density. | |
void | LMass (real_t coef=1.) |
Add element lumped mass contribution to matrix after multiplication by coef [Default: 1 ]. | |
void | Mass (real_t coef=1.) |
Add element consistent mass contribution to matrix after multiplication by coef [Default: 1 ]. | |
void | Viscous (real_t coef=1.) |
Add element viscous contribution to matrix after multiplication by coef [Default: 1 ]. | |
void | RHS_Viscous (real_t coef=1.) |
Add element viscous contribution to right-hand side after multiplication by coef [Default: 1 ]. | |
void | Penal (real_t coef=1.) |
Add element penalty contribution to matrix after multiplication by coef [Default: 1 ]. | |
void | LHS1_Convection (real_t coef=1.) |
Add convection contribution to left-hand side after multiplication by coef [Default: 1 ]. More... | |
void | LHS2_Convection (real_t coef=1.) |
Add convection contribution to left-hand side after multiplication by coef [Default: 1 ]. More... | |
void | RHS_Convection (real_t coef=1.) |
Add convection contribution to right-hand side after multiplication by coef [Default: 1 ]. | |
void | BodyRHS (UserData< real_t > &ud) |
Add body right-hand side term to right-hand side. More... | |
void | BoundaryRHS (UserData< real_t > &ud) |
Add boundary right-hand side term to right-hand side. More... | |
void | Periodic (real_t coef=1.e20) |
Add contribution of periodic boundary condition (by a penalty technique). More... | |
real_t | Pressure (real_t coef=1.) |
Calculate element pressure by penalization after multiplication by coef [Default: 1 ]. | |
void | updateBC (const Element &el, const Vect< real_t > &bc) |
Update Right-Hand side by taking into account essential boundary conditions. More... | |
void | updateBC (const Vect< real_t > &bc) |
Update Right-Hand side by taking into account essential boundary conditions. More... | |
void | DiagBC (int 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 | ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be, int dof) |
Localize Element 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 | 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, int dof_type=NODE_FIELD, int flag=0) |
Localize Element Vector. More... | |
void | SideVector (const Vect< real_t > &b) |
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 (PETScMatrix< real_t > &A) |
Assemble element matrix into global one. More... | |
void | ElementAssembly (PETScVect< real_t > &b) |
Assemble element right-hand side vector 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 | ElementAssembly (Vect< real_t > &v) |
Assemble element vector into global one. More... | |
void | SideAssembly (PETScMatrix< real_t > &A) |
Assemble side matrix into global one. More... | |
void | SideAssembly (PETScVect< real_t > &b) |
Assemble side right-hand side vector into global one. 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 | SideAssembly (Vect< real_t > &v) |
Assemble side (edge or face) vector 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 | 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. | |
void | setInitialSolution (const Vect< real_t > &u) |
Set initial solution (previous time step) | |
real_t | setMaterialProperty (const string &exp, const string &prop) |
Define a material property by an algebraic expression. More... | |
void | setMesh (Mesh &m) |
Define mesh and renumber DOFs after removing imposed ones. | |
Mesh & | getMesh () const |
Return reference to Mesh instance. More... | |
LinearSolver< real_t > & | getLinearSolver () |
Return reference to linear solver instance. | |
void | setSolver (Iteration ls, Preconditioner pc=IDENT_PREC) |
Choose solver for the linear system. More... | |
int | SolveLinearSystem (Matrix< real_t > *A, Vect< real_t > &b, Vect< real_t > &x) |
Solve the linear system. More... | |
Public Attributes | |
LocalMatrix< real_t, NEE_, NEE_ > | eMat |
LocalMatrix instance containing local matrix associated to current element. | |
LocalMatrix< real_t, NSE_, NSE_ > | sMat |
LocalMatrix instance containing local matrix associated to current side. | |
LocalVect< real_t, NEE_ > | ePrev |
LocalVect instance containing local vector associated to current element. More... | |
LocalVect< real_t, NEE_ > | eRHS |
LocalVect instance containing local right-hand side vector associated to current element. | |
LocalVect< real_t, NEE_ > | eRes |
LocalVect instance containing local residual vector associated to current element. | |
LocalVect< real_t, NSE_ > | sRHS |
LocalVect instance containing local right-hand side vector associated to current side. | |
Protected Member Functions | |
void | Viscosity (const real_t &visc) |
Set (constant) Viscosity. | |
void | Viscosity (const string &exp) |
Set viscosity given by an algebraic expression. | |
void | Density (const real_t &dens) |
Set (constant) Viscosity. | |
void | Density (const string &exp) |
Set Density given by an algebraic expression. | |
void | ThermalExpansion (const real_t *e) |
Set (constant) thermal expansion coefficient. | |
void | ThermalExpansion (const string &exp) |
Set thermal expansion coefficient given by an algebraic expression. | |
void | setMaterial () |
Set material properties. | |
void | Init (const Element *el) |
Set element arrays to zero. | |
void | Init (const Side *sd) |
Set side arrays to zero. | |
Detailed Description
Builds finite element arrays for incompressible Navier-Stokes equations in 2-D domains using Q1/P0 element and a penaly formulation for the incompressibility condition.
Constructor & Destructor Documentation
NSP2DQ41 | ( | ) |
Default Constructor.
Builds an empty equation
Constructor using element and previous time data.
- Parameters
-
[in] el Pointer to Element instance [in] u Vector that contains velocity at previous time step [in] time Time value [Default: 0.
]
Constructor using side and previous time data.
- Parameters
-
[in] sd Pointer to Side instance [in] u Vector that contains velocity at previous time step [in] time Time value [Default: 0.
]
Member Function Documentation
void LHS1_Convection | ( | real_t | coef = 1. | ) |
Add convection contribution to left-hand side after multiplication by coef
[Default: 1
].
First term, explicit velocity, implicit velocity derivatives
void LHS2_Convection | ( | real_t | coef = 1. | ) |
Add convection contribution to left-hand side after multiplication by coef
[Default: 1
].
Second term, implicit velocity, explicit velocity derivatives
Add body right-hand side term to right-hand side.
- Parameters
-
[in] ud UserData instance that defines data
Add boundary right-hand side term to right-hand side.
- Parameters
-
[in] ud UserData instance that defines data
void Periodic | ( | real_t | coef = 1.e20 | ) |
Add contribution of periodic boundary condition (by a penalty technique).
Boundary nodes where periodic boundary conditions are to be imposed must have codes equal to PERIODIC_A
on one side and PERIODIC_B
on the opposite side.
- Parameters
-
[in] coef Value of penalty parameter [Default: 1.e20
].
Update Right-Hand side by taking into account essential boundary conditions.
- Parameters
-
[in] el Reference to current element instance [in] bc Vector that contains imposed values at all DOFs
Update Right-Hand side by taking into account essential boundary conditions.
- Parameters
-
[in] bc Vector that contains imposed values at all DOFs
- Remarks
- The current element is pointed by
_theElement
|
inherited |
Update element matrix to impose bc by diagonalization technique.
- Parameters
-
[in] dof_type DOF type option. To choose among the enumerated values: -
NODE_FIELD
, DOFs are supported by nodes [Default] -
ELEMENT_FIELD
, DOFs are supported by elements -
SIDE_FIELD
, DOFs are supported by sides
[in] dof DOF setting: -
= 0
, All DOFs are taken into account [Default] -
!= 0
, Only DOF No.dof
is handled in the system
-
Localize Element Vector from a Vect instance.
- Parameters
-
[in] b Reference to global vector to be localized. The resulting local vector can be accessed by attribute ePrev. This member function is to be used if a constructor with Element was invoked.
Localize Element Vector from a Vect instance.
- Parameters
-
[in] b Global vector to be localized. [out] be Local vector, the length of which is the total number of element equations.
- Remarks
- All degrees of freedom are transferred to the local vector
|
inherited |
Localize Element Vector from a Vect instance.
- Parameters
-
[in] b Global vector to be localized. [out] be Local vector, the length of which is the total number of element equations. [in] dof Degree of freedom to transfer to the local vector
- Remarks
- Only yhe dega dof is transferred to the local vector
|
inherited |
Localize Element Vector from a Vect instance.
- Parameters
-
[in] b Global vector to be localized. [out] be Local vector, the length of which is the total number of element equations.
- Remarks
- Vector
b
is assumed to contain only one degree of freedom by node.
Localize Element Vector from a Vect instance.
- Parameters
-
[in] b Global vector to be localized. [out] be Local vector, the length of which is
Localize Element Vector.
- Parameters
-
[in] b Global vector to be localized [in] dof_type DOF type option. To choose among the enumerated values: -
NODE_FIELD
, DOFs are supported by nodes [Default] -
ELEMENT_FIELD
, DOFs are supported by elements -
SIDE_FIELD
, DOFs are supported by sides
[in] flag Option to set: -
= 0
, All DOFs are taken into account [Default] -
!= 0
, Only DOF numberdof
is handled in the system
ePrev
. -
- Remarks
- This member function is to be used if a constructor with Element was invoked. It uses the Element pointer
_theElement
Localize Side Vector.
- Parameters
-
[in] b Global vector to be localized -
NODE_FIELD
, DOFs are supported by nodes [ default ] -
ELEMENT_FIELD
, DOFs are supported by elements -
SIDE_FIELD
, DOFs are supported by sides
ePrev
. -
- Remarks
- This member function is to be used if a constructor with Side was invoked. It uses the Side pointer
_theSide
|
inherited |
Localize coordinates of element nodes.
Coordinates are stored in array _x[0], _x[1], ...
which are instances of class Point<real_t>
- Remarks
- This member function uses the Side pointer
_theSide
|
inherited |
Localize coordinates of side nodes.
Coordinates are stored in array _x[0], _x[1], ...
which are instances of class Point<real_t>
- Remarks
- This member function uses the Element pointer
_theElement
Assemble element matrix into global one.
- Parameters
-
A Pointer to global matrix (abstract class: can be any of classes SkSMatrix, SkMatrix, SpMatrix)
- Warning
- The element pointer is given by the global variable
theElement
|
inherited |
Assemble element matrix into global one.
- Parameters
-
A Reference to global matrix
- Warning
- The element pointer is given by the global variable
theElement
Assemble element right-hand side vector into global one.
- Parameters
-
b Reference to global right-hand side vector
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one.
- Parameters
-
A Global matrix stored as a BMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one.
- Parameters
-
A Global matrix stored as an SkSMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one.
- Parameters
-
[in] A Global matrix stored as an SkMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one.
- Parameters
-
[in] A Global matrix stored as an SpMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one.
- Parameters
-
[in] A Global matrix stored as an TrMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element vector into global one.
- Parameters
-
[in] v Global vector (Vect instance)
- Warning
- The element pointer is given by the global variable
theElement
|
inherited |
Assemble side matrix into global one.
- Parameters
-
A Reference to global matrix
- Warning
- The side pointer is given by the global variable
theSide
Assemble side right-hand side vector into global one.
- Parameters
-
b Reference to global right-hand side vector
- Warning
- The side pointer is given by the global variable
theSide
Assemble side (edge or face) matrix into global one.
- Parameters
-
A Pointer to global matrix (abstract class: can be any of classes SkSMatrix, SkMatrix, SpMatrix)
- Warning
- The side pointer is given by the global variable
theSide
Assemble side (edge or face) matrix into global one.
- Parameters
-
[in] A Global matrix stored as an SkSMatrix instance
- Warning
- The side pointer is given by the global variable
theSide
Assemble side (edge or face) matrix into global one.
- Parameters
-
[in] A Global matrix stored as an SkMatrix instance
- Warning
- The side pointer is given by the global variable
theSide
Assemble side (edge or face) matrix into global one.
- Parameters
-
[in] A Global matrix stored as an SpMatrix instance
- Warning
- The side pointer is given by the global variable
theSide
Assemble side (edge or face) vector into global one.
- Parameters
-
[in] v Global vector (Vect instance)
- Warning
- The side pointer is given by the global variable
theSide
Assemble element matrix into global one for the Discontinuous Galerkin approximation.
- Parameters
-
A Pointer to global matrix (abstract class: can be any of classes SkSMatrix, SkMatrix, SpMatrix)
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one for the Discontinuous Galerkin approximation.
- Parameters
-
A Global matrix stored as an SkSMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one for the Discontinuous Galerkin approximation.
- Parameters
-
[in] A Global matrix stored as an SkMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one for the Discontinuous Galerkin approximation.
- Parameters
-
[in] A Global matrix stored as an SpMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble element matrix into global one for the Discontinuous Galerkin approximation.
- Parameters
-
[in] A Global matrix stored as an TrMatrix instance
- Warning
- The element pointer is given by the global variable
theElement
Assemble product of element matrix by element vector into global vector.
- Parameters
-
[in] el Reference to Element instance [in] x Global vector to multiply by (Vect instance) [out] b Global vector to add (Vect instance)
Assemble product of side matrix by side vector into global vector.
- Parameters
-
[in] sd Reference to Side instance [in] x Global vector to multiply by (Vect instance) [out] b Global vector (Vect instance)
|
inherited |
Define a material property by an algebraic expression.
- Parameters
-
[in] exp Algebraic expression [in] prop Property name
- Returns
- Return value in expression evaluation:
-
=0
, Normal evaluation -
!=0
, An error message is displayed
-
|
inherited |
Return reference to Mesh instance.
- Returns
- Reference to Mesh instance
|
inherited |
Choose solver for the linear system.
- Parameters
-
[in] ls Solver of the linear system. To choose among the enumerated values: DIRECT_SOLVER
,CG_SOLVER
,GMRES_SOLVER
-
DIRECT_SOLVER
, Use a facorization solver [default] -
CG_SOLVER
, Conjugate Gradient iterative solver -
CGS_SOLVER
, Squared Conjugate Gradient iterative solver -
BICG_SOLVER
, BiConjugate Gradient iterative solver -
BICG_STAB_SOLVER
, BiConjugate Gradient Stabilized iterative solver -
GMRES_SOLVER
, GMRES iterative solver -
QMR_SOLVER
, QMR iterative solver
[in] pc Preconditioner to associate to the iterative solver. If the direct solver was chosen for the first argument this argument is not used. Otherwise choose among the enumerated values: -
IDENT_PREC
, Identity preconditioner (no preconditioning [default]) -
DIAG_PREC
, Diagonal preconditioner -
ILU_PREC
, Incomplete LU factorization preconditioner
-
Solve the linear system.
- Parameters
-
[in] A Pointer to matrix of the system (Instance of class SpMatrix) [in] b Vector containing right-hand side [in,out] x Vector containing initial guess of solution on input, actual solution on output