Builds finite element arrays for thermal diffusion and convection in 3-D domains using 4-Node tetrahedra. More...
Inheritance diagram for DC3DT4:
Public Member Functions | |
| DC3DT4 () | |
| Default Constructor. | |
| DC3DT4 (const Element *el) | |
| Constructor for an element. | |
| DC3DT4 (const Side *sd) | |
| Constructor for a boundary side. | |
| DC3DT4 (const Element *el, const Vect< double > &u, double time=0.) | |
| Constructor for an element (transient case). | |
| DC3DT4 (const Side *sd, const Vect< double > &u, double time=0.) | |
| Constructor for a boundary side (transient case). | |
| DC3DT4 (const Element *el, const Vect< double > &u, double time, double deltat, int scheme) | |
| Constructor for an element (transient case) with specification of time integration scheme. | |
| DC3DT4 (const Side *sd, const Vect< double > &u, double time, double deltat, int scheme) | |
| Constructor for a side (transient case) with specification of time integration scheme. | |
| ~DC3DT4 () | |
| Destructor. | |
| void | build () |
| Build the linear system without solving. | |
| void | LCapacity (double coef) |
Add lumped capacity contribution to left and right-hand sides after multiplying it by coefficient coef. | |
| void | LCapacityToLHS (double coef=1) |
Add lumped capacity matrix to left-hand side after multiplying it by coefficient coef. | |
| void | LCapacityToRHS (double coef=1) |
Add lumped capacity contribution to right-hand side after multiplying it by coefficient coef. | |
| void | Capacity (double coef=1) |
Add Consistent capacity contribution to left and right-hand sides after multiplying it by coefficient coef. | |
| void | CapacityToLHS (double coef=1) |
Add consistent capacity matrix to left-hand side after multiplying it by coefficient coef. | |
| void | CapacityToRHS (double coef=1) |
Add consistent capacity contribution to right-hand side after multiplying it by coefficient coef. | |
| void | Diffusion (double coef=1) |
Add diffusion matrix to left hand side after multiplying it by coefficient coef. | |
| void | Diffusion (const DMatrix< double > &diff, double coef=1) |
Add diffusion matrix to left hand side after multiplying it by coefficient coef. | |
| void | DiffusionToRHS (double coef=1) |
Add diffusion contribution to right hand side after multiplying it by coefficient coef. | |
| void | Convection (double coef=1) |
| Add convection matrix to left-hand side after multiplying it by coefficient coef. | |
| void | Convection (const Point< double > &v, double coef=1) |
Add convection matrix to left-hand side after multiplying it by coefficient coef. | |
| void | Convection (const Vect< Point< double > > &v, double coef=1) |
Add convection matrix to left-hand side after multiplying it by coefficient coef. | |
| void | RHS_Convection (const Point< double > &v, double coef=1.) |
Add convection contribution to right-hand side after multiplying it by coefficient coef. | |
| void | BodyRHS (UserData< double > &ud, double coef=1) |
Add body right-hand side term to right hand side after multiplying it by coefficient coef. | |
| void | BodyRHS (const Vect< double > &b, int opt=LOCAL_ARRAY) |
| Add body right-hand side term to right hand side. | |
| void | BoundaryRHS (UserData< double > &ud, double coef=1) |
Add boundary right-hand side term to right hand side after multiplying it by coefficient coef. | |
| void | BoundaryRHS (const Vect< double > &b, int opt=LOCAL_ARRAY) |
Add boundary right-hand side term to right hand side after multiplying it by coefficient coef. | |
| void | BoundaryRHS (double flux) |
| Add boundary right-hand side flux to right hand side. | |
| Point< double > | Flux () const |
| Return (constant) heat flux in element. | |
| Point< double > | Grad (const Vect< double > &u) const |
| Return gradient of vector u in element. u is a local vector. | |
| void | Periodic (double coef=1.e20) |
| Add contribution of periodic boundary condition (by a penalty technique). | |
| virtual void | setStab () |
| Set stabilized formulation. | |
| void | setLumpedCapacity () |
| Add lumped capacity contribution to left and right-hand sides taking into account time integration scheme. | |
| void | setCapacity () |
| Add consistent capacity contribution to left and right-hand sides taking into account time integration scheme. | |
| void | setDiffusion () |
| Add diffusion contribution to left and/or right-hand side taking into account time integration scheme. | |
| virtual void | ConvectionToRHS (double coef=1.) |
| Add convection term to right-hand side. | |
| void | setConvection () |
| Add convection contribution to left and/or right-hand side taking into account time integration scheme. | |
| int | runOneTimeStep () |
| Run one time step. | |
| int | run () |
| Run the equation. | |
| void | setRhoCp (const double &rhocp) |
| Set product of Density by Specific heat (constants) | |
| void | setConductivity (const double &diff) |
| Set (constant) thermal conductivity. | |
| void | RhoCp (const string &exp) |
| Set product of Density by Specific heat given by an algebraic expression. | |
| void | Conduc (const string &exp) |
| Set thermal conductivity given by an algebraic expression. | |
| void | buildEigen (SkSMatrix< double > &K, SkSMatrix< double > &M) |
| Build global stiffness and mass matrices for the eigen system. | |
| void | buildEigen (SkSMatrix< double > &K, Vect< double > &M) |
| Build global stiffness and mass matrices for the eigen system. | |
| void | updateBC (const Vect< T_ > &bc) |
| Update Right-Hand side by taking into account essential boundary conditions. | |
| void | DiagBC (int dof_type=NODE_DOF, int dof=0) |
| Update element matrix to impose bc by diagonalization technique. | |
| void | LocalNodeVector (Vect< T_ > &b) |
| Localize Element Vector from a Vect instance. | |
| void | ElementVector (const Vect< T_ > &b, int dof_type=NODE_FIELD, int flag=0) |
| Localize Element Vector. | |
| void | SideVector (const Vect< T_ > &b) |
| Localize Side Vector. | |
| void | ElementNodeCoordinates () |
| Localize coordinates of element nodes. | |
| void | SideNodeCoordinates () |
| Localize coordinates of side nodes. | |
| void | ElementAssembly (Matrix< T_ > *A) |
| Assemble element matrix into global one. | |
| void | ElementAssembly (SkSMatrix< T_ > &A) |
| Assemble element matrix into global one. | |
| void | ElementAssembly (SkMatrix< T_ > &A) |
| Assemble element matrix into global one. | |
| void | ElementAssembly (SpMatrix< T_ > &A) |
| Assemble element matrix into global one. | |
| void | ElementAssembly (TrMatrix< T_ > &A) |
| Assemble element matrix into global one. | |
| void | ElementAssembly (Vect< T_ > &v) |
| Assemble element vector into global one. | |
| void | SideAssembly (Matrix< T_ > *A) |
| Assemble side (edge or face) matrix into global one. | |
| void | SideAssembly (SkSMatrix< T_ > &A) |
| Assemble side (edge or face) matrix into global one. | |
| void | SideAssembly (SkMatrix< T_ > &A) |
| Assemble side (edge or face) matrix into global one. | |
| void | SideAssembly (SpMatrix< T_ > &A) |
| Assemble side (edge or face) matrix into global one. | |
| void | SideAssembly (Vect< T_ > &v) |
| Assemble side (edge or face) vector into global one. | |
| size_t | getNbNodes () const |
| Return number of element nodes. | |
| size_t | getNbEq () const |
| Return number of element equations. | |
| T_ * | A () |
| Return element matrix as a C-array. | |
| T_ * | sA () |
| Return side matrix as a C-array. | |
| T_ * | b () |
| Return element right-hand side as a C-array. | |
| T_ * | sb () |
| Return side right-hand side as a C-array. | |
| T_ * | Prev () |
| Return element matrix as a C-array. | |
| LocalMatrix< T_, NEE_, NEE_ > & | EA () |
| Return element matrix as a LocalMatrix instance. | |
| LocalMatrix< T_, NSE_, NSE_ > & | SA () |
| Return side matrix as a LocalMatrix instance. | |
| LocalVect< T_, NEE_ > & | Eb () |
| Return element right-hand side as a LocalVect instance. | |
| LocalVect< T_, NEE_ > & | Ep () |
| Return element matrix as a C-array. | |
| void | setInitialSolution (const Vect< T_ > &u) |
| Set initial solution (previous time step) | |
| double | setMaterialProperty (const string &exp, const string &prop) |
| Define a material property by an algebraic expression. | |
| void | setMesh (class Mesh &m) |
| Define mesh and renumber DOFs after removing imposed ones. | |
| Mesh & | getMesh () const |
| Return reference to Mesh instance. | |
| LinearSolver< T_ > & | getLinearSolver () |
| Return reference to linear solver instance. | |
| void | setSolver (int ls, int pc=IDENT_PREC) |
| Choose solver for the linear system. | |
| int | solveEigenProblem (int nb_eigv, bool g=false) |
| Compute eigenvalues and eigenvectors. | |
| double | getEigenValue (int n) const |
| Return the n-th eigenvalue. | |
| void | getEigenVector (int n, Vect< double > &v) const |
| Store the eigenvector corresponding to a given eigenvalue. | |
| class Eigen & | getEigenSolver () |
| Return reference to eigenproblem solver. | |
Protected Member Functions | |
| 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 thermal diffusion and convection in 3-D domains using 4-Node tetrahedra.
Note that members calculating element arrays have as an argument a double coef that will be multiplied by the contribution of the current element. This makes possible testing different algorithms.
Constructor & Destructor Documentation
| DC3DT4 | ( | ) |
Default Constructor.
Constructs an empty equation.
Constructor for an element (transient case).
- Parameters:
-
[in] el Pointer to element. [in] u Vect instance that contains solution at previous time step. [in] time Current time value (Default value is 0).
Constructor for a boundary side (transient case).
- Parameters:
-
[in] sd Pointer to side. [in] u Vect instance that contains solution at previous time step. [in] time Current time value (Default value is 0).
Constructor for an element (transient case) with specification of time integration scheme.
- Parameters:
-
[in] el Pointer to element. [in] u Vect instance that contains solution at previous time step. [in] time Current time value (Default value is 0). [in] deltat Value of time step [in] scheme Time Integration Scheme (): - FORWARD_EULER: for Forward Euler scheme
- BACKWARD_EULER: for Backward Euler scheme
- CRANK_NICOLSON: for Crank-Nicolson Euler scheme
Constructor for a side (transient case) with specification of time integration scheme.
- Parameters:
-
[in] sd Pointer to side. [in] u Vect instance that contains solution at previous time step. [in] time Current time value (Default value is 0). [in] deltat Value of time step [in] scheme Time Integration Scheme (): - FORWARD_EULER: for Forward Euler scheme
- BACKWARD_EULER: for Backward Euler scheme
- CRANK_NICOLSON: for Crank-Nicolson Euler scheme
Member Function Documentation
| void LCapacity | ( | double | coef | ) |
Add lumped capacity contribution to left and right-hand sides after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
| void LCapacityToLHS | ( | double | coef = 1 | ) | [virtual] |
Add lumped capacity matrix to left-hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void LCapacityToRHS | ( | double | coef = 1 | ) | [virtual] |
Add lumped capacity contribution to right-hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void Capacity | ( | double | coef = 1 | ) |
Add Consistent capacity contribution to left and right-hand sides after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
| void CapacityToLHS | ( | double | coef = 1 | ) | [virtual] |
Add consistent capacity matrix to left-hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void CapacityToRHS | ( | double | coef = 1 | ) | [virtual] |
Add consistent capacity contribution to right-hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void Diffusion | ( | double | coef = 1 | ) | [virtual] |
Add diffusion matrix to left hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
Add diffusion matrix to left hand side after multiplying it by coefficient coef.
Case where the diffusivity matrix is given as an argument.
- Parameters:
-
[in] diff Diffusion matrix (class DMatrix). [in] coef Coefficient to multiply by added term (default value = 1).
| void DiffusionToRHS | ( | double | coef = 1 | ) | [virtual] |
Add diffusion contribution to right hand side after multiplying it by coefficient coef.
To be used for explicit diffusion term
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void Convection | ( | double | coef = 1 | ) | [virtual] |
Add convection matrix to left-hand side after multiplying it by coefficient coef.
Case where velocity field has been previouly defined
- Parameters:
-
[in] coef Coefficient to multiply by added term (default value = 1).
Reimplemented from Equa_Therm< double, 4, 4, 3, 3 >.
| void Convection | ( | const Point< double > & | v, |
| double | coef = 1 |
||
| ) |
Add convection matrix to left-hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] v Constant velocity vector [in] coef Coefficient to multiply by added term (default value = 1).
| void Convection | ( | const Vect< Point< double > > & | v, |
| double | coef = 1 |
||
| ) |
Add convection matrix to left-hand side after multiplying it by coefficient coef.
Case where velocity field is given by a vector v.
- Parameters:
-
[in] v Velocity vector. [in] coef Coefficient to multiply by added term (default value = 1).
| void RHS_Convection | ( | const Point< double > & | v, |
| double | coef = 1. |
||
| ) |
Add convection contribution to right-hand side after multiplying it by coefficient coef.
To be used for explicit convection term.
- Parameters:
-
[in] v Velocity vector. [in] coef Coefficient to multiply by added term (default value = 1).
Add body right-hand side term to right hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] ud Instance of UserData or of an inherited class. Contains a member function that provides body source. [in] coef Coefficient to multiply by added term (default value = 1).
Add body right-hand side term to right hand side.
- Parameters:
-
[in] b Local vector containing source at element nodes. [in] opt Vector is local (LOCAL_ARRAY) with size 4 or global (GLOBAL_ARRAY) with size = Number of nodes.
| void BoundaryRHS | ( | UserData< double > & | ud, |
| double | coef = 1 |
||
| ) |
Add boundary right-hand side term to right hand side after multiplying it by coefficient coef.
- Parameters:
-
[in] ud Instance of UserData or of an inherited class. Contains a member function that provides body source. [in] coef Value by which the added term is multiplied [Default: 1]
| void BoundaryRHS | ( | const Vect< double > & | b, |
| int | opt = LOCAL_ARRAY |
||
| ) |
Add boundary right-hand side term to right hand side after multiplying it by coefficient coef.
Case where body source is given by a vector
- Parameters:
-
[in] b Vector containing source at side nodes. [in] opt Vector is local (LOCAL_ARRAY) with size 3 or global (GLOBAL_ARRAY) with size = Number of nodes.
| void BoundaryRHS | ( | double | flux | ) |
Add boundary right-hand side flux to right hand side.
- Parameters:
-
[in] flux Vector containing source at side nodes.
| void Periodic | ( | double | 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).
| virtual void setStab | ( | ) | [virtual, inherited] |
Set stabilized formulation.
Stabilized variational formulations are to be used when the Péclet number is large.
By default, no stabilization is used.
| int run | ( | ) | [inherited] |
Run the equation.
If the analysis (see function setAnalysis) is STEADY_STATE, then the function solves the stationary equation.
If the analysis is TRANSIENT, then the function performs time iterations until the final time is reached.
| void buildEigen | ( | SkSMatrix< double > & | K, |
| SkSMatrix< double > & | M | ||
| ) | [inherited] |
Build global stiffness and mass matrices for the eigen system.
Case where the mass matrix is consistent
- Parameters:
-
[in] K Stiffness matrix [in] M Consistent mass matrix
| void buildEigen | ( | SkSMatrix< double > & | K, |
| Vect< double > & | M | ||
| ) | [inherited] |
Build global stiffness and mass matrices for the eigen system.
Case where the mass matrix is lumped
- Parameters:
-
[in] K Stiffness matrix [in] M Vector containing diagonal mass matrix
Update Right-Hand side by taking into account essential boundary conditions.
- Parameters:
-
[in] bc Vector that contains imposed values at all DOFs
| void DiagBC | ( | int | dof_type = NODE_DOF, |
| int | dof = 0 |
||
| ) | [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 sustem
| void LocalNodeVector | ( | Vect< T_ > & | b | ) | [inherited] |
| void ElementVector | ( | const Vect< T_ > & | b, |
| int | dof_type = NODE_FIELD, |
||
| int | flag = 0 |
||
| ) | [inherited] |
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 No. dof is handled in the system The resulting local vector can be accessed by attribute
ePrev.
| void SideVector | ( | const Vect< T_ > & | b | ) | [inherited] |
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 The resulting local vector can be accessed by attribute ePrev.
| void ElementNodeCoordinates | ( | ) | [inherited] |
Localize coordinates of element nodes.
Coordinates are stored in array _x[0], _x[1], ... which are instances of class Point<double>
- Remarks:
- This member function uses the Side pointer
_theSide
| void SideNodeCoordinates | ( | ) | [inherited] |
Localize coordinates of side nodes.
Coordinates are stored in array _x[0], _x[1], ... which are instances of class Point<double>
- Remarks:
- This member function uses the Element pointer
_theElement
| void ElementAssembly | ( | Matrix< T_ > * | A | ) | [inherited] |
| void ElementAssembly | ( | SkSMatrix< T_ > & | A | ) | [inherited] |
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
| void ElementAssembly | ( | SkMatrix< T_ > & | A | ) | [inherited] |
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
| void ElementAssembly | ( | SpMatrix< T_ > & | A | ) | [inherited] |
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
| void ElementAssembly | ( | TrMatrix< T_ > & | A | ) | [inherited] |
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
| void ElementAssembly | ( | Vect< T_ > & | v | ) | [inherited] |
Assemble element vector into global one.
- Parameters:
-
[in] v Global vector (Vect instance)
- Warning:
- The element pointer is given by the global variable theElement
| void SideAssembly | ( | Matrix< T_ > * | A | ) | [inherited] |
| void SideAssembly | ( | SkSMatrix< T_ > & | A | ) | [inherited] |
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
| void SideAssembly | ( | SkMatrix< T_ > & | A | ) | [inherited] |
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
| void SideAssembly | ( | SpMatrix< T_ > & | A | ) | [inherited] |
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
| void SideAssembly | ( | Vect< T_ > & | v | ) | [inherited] |
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
| double setMaterialProperty | ( | const string & | exp, |
| const string & | prop | ||
| ) | [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.
| void setSolver | ( | int | ls, |
| int | pc = IDENT_PREC |
||
| ) | [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
| int solveEigenProblem | ( | int | nb_eigv, |
| bool | g = false |
||
| ) | [inherited] |
Compute eigenvalues and eigenvectors.
Eigenvalues and vectors are computed using the Bathe's subspace iteration method.
- Parameters:
-
[in] nb_eigv Number of eigenvalues to compute [in] g Option to choose whether to solve a generalized eigenvalue problem (true) or a standard one (false). The generalized eigenvalue problem corresponds to the case where a consistent mass matrix (rather than a lumped one) is computed. Default value is false.
| double getEigenValue | ( | int | n | ) | const [inherited] |
Return the n-th eigenvalue.
This functions works only if the member function getEigen was called with an argument nb_eigv greater or equal to n. Otherwise it returns 0.
| void getEigenVector | ( | int | n, |
| Vect< double > & | v | ||
| ) | const [inherited] |
Store the eigenvector corresponding to a given eigenvalue.
- Parameters:
-
[in] n Label of the eigenvalue [out] v Vect instance containing the corresponding eigenvector. This vector is resized.
- OFELI
- DC3DT4