Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
FEDD::AssembleFENavierStokes< SC, LO, GO, NO > Class Template Reference
Inheritance diagram for FEDD::AssembleFENavierStokes< SC, LO, GO, NO >:

Public Types

typedef Matrix< SC, LO, GO, NO > Matrix_Type
 
typedef Teuchos::RCP< Matrix_TypeMatrixPtr_Type
 
typedef SmallMatrix< SC > SmallMatrix_Type
 
typedef Teuchos::RCP< SmallMatrix_TypeSmallMatrixPtr_Type
 
typedef MultiVector< SC, LO, GO, NO > MultiVector_Type
 
typedef Teuchos::RCP< MultiVector_TypeMultiVectorPtr_Type
 
typedef AssembleFE< SC, LO, GO, NO > AssembleFE_Type
 
- Public Types inherited from FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >
typedef SmallMatrix< default_sc > SmallMatrix_Type
 
typedef Teuchos::RCP< SmallMatrix_TypeSmallMatrixPtr_Type
 
typedef AssembleFE< default_sc, default_lo, default_go, default_no > AssembleFE_Type
 

Public Member Functions

void assembleJacobian () override
 Assemble the element Jacobian matrix.
 
void assembleRHS () override
 Assemble the element right hand side vector.
 
void assembleJacobianBlock (LO i) override
 Assemble the element Jacobian matrix.
 
void setCoeff (SmallMatrix_Type coeff)
 
void assembleFixedPoint ()
 Assembly of FixedPoint- Matrix (System Matrix K with current u)
 
SmallMatrixPtr_Type getFixedPointMatrix ()
 
- Public Member Functions inherited from FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >
SmallMatrixPtr_Type getJacobian ()
 Get the currently assembled element Jacobian matrix.
 
SmallMatrixPtr_Type getJacobianBlock (default_lo i)
 Get the currently assembled element Jacobian matrix.
 
vec_dbl_ptr_Type getRHS ()
 Get the currently assembled right hand side vector.
 
virtual void checkParameters ()
 Check the input parameters from the constructor and the ParameterList for completeness and consistency.
 
virtual void updateParams (ParameterListPtr_Type params)
 Set or update the parameters read from the ParameterList.
 
virtual void updateParameter (std::string type, double value)
 Update the parameter read from the ParameterList.
 
virtual void advanceInTime (double dt)
 This function is called every time the FEDDLib proceeds from one to the next time step. The size of the time step will always be provided as input.
 
double getTimeStep ()
 Get the time state of the object.
 
void advanceNewtonStep ()
 This function is called every time the FEDDLib proceeds from one to the next newton step. The size of the time step will always be provided as input.
 
int getNewtonStep ()
 Get the time state of the object.
 
void updateSolution (vec_dbl_Type solution)
 Update the solution vector.
 
vec_dbl_ptr_Type getSolution ()
 Get the current local solution vector.
 
void preProcessing ()
 This function is called in the beginning of each Newton step before actually assmblying anything.
 
void postProcessing ()
 This function is called at the end of each Newton step after updating the solution vector.
 
int getDim ()
 Get the spatial dimension. (Typically 2 or 3)
 
vec2D_dbl_Type getNodesRefConfig ()
 Return the coordnates of the finite element nodes.
 
void addRHSFunc (RhsFunc_Type rhsFunc)
 
tuple_sd_vec_ptr_Type getTupleElement ()
 Return vector of tupled with element based values. First column per tuple string with description, second column with corresponding value.
 
double getTimeIncrement ()
 Returns the time increment. Required by AceGen implementation.
 
void setGlobalElementID (default_go goID)
 
default_go getGlobalElementID ()
 
virtual void computeLocalconstOutputField ()
 E.g. In case of non-newtonian fluids the viscosity is not constant - Compute the viscosity for an element depending on the known velocity solution.
 
vec_dbl_Type getLocalconstOutputField ()
 Obtain value of resulting postprocessing field at nodes/ inside an element.
 

Protected Member Functions

 AssembleFENavierStokes (int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
 Constructor for AssembleFEAceNavierStokes.
 
void assemblyLaplacian (SmallMatrixPtr_Type &elementMatrix)
 Assembly function for vector values laplacian $ \int_T \nabla v \cdot \nabla u ~dx$.
 
void assemblyAdvection (SmallMatrixPtr_Type &elementMatrix)
 Assembly advection vector field $ \int_T \nabla v \cdot u(\nabla u) ~dx$.
 
void assemblyAdvectionInU (SmallMatrixPtr_Type &elementMatrix)
 Assembly advection vector field in u
TODO: [JK] What is this? Is this the portion that needs to be added for Newton's method? Basically: A+N+W, A:Laplace, N is assemblyAdvection and W is assemblyAdvectionInU?
 
void assemblyDivAndDivT (SmallMatrixPtr_Type &elementMatrix)
 Assembly $ \int_T  div(v) p ~dx$ / $ \int_T  div(u) q ~dx$.
 
void buildTransformation (SmallMatrix< SC > &B)
 Building Transformation.
 
void applyBTinv (vec3D_dbl_ptr_Type &dPhiIn, vec3D_dbl_Type &dPhiOut, SmallMatrix< SC > &Binv)
 
- Protected Member Functions inherited from FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >
 AssembleFE (int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
 Constructor.
 

Protected Attributes

int dofsVelocity_
 
int dofsPressure_
 
std::string FETypeVelocity_
 
std::string FETypePressure_
 
int numNodesVelocity_
 
int numNodesPressure_
 
int dofsElementVelocity_
 
int dofsElementPressure_
 
int dofsElement_
 
vec_dbl_Type solutionVelocity_
 
vec_dbl_Type solutionPressure_
 
SmallMatrixPtr_Type constantMatrix_
 
SmallMatrixPtr_Type ANB_
 
SmallMatrix_Type coeff_
 
double viscosity_
 
double density_
 
std::string linearization_
 
- Protected Attributes inherited from FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >
SmallMatrixPtr_Type jacobian_
 
SmallMatrixPtr_Type jacobianBlock_
 
vec_dbl_ptr_Type rhsVec_
 
RhsFunc_Type rhsFunc_
 
int dim_
 
tuple_disk_vec_ptr_Type diskTuple_
 
tuple_sd_vec_ptr_Type elementIntormation_
 
vec2D_dbl_Type nodesRefConfig_
 
bool timeProblem_
 
int flag_
 
double timeStep_
 
int newtonStep_
 
ParameterListPtr_Type paramsMaterial_
 
ParameterListPtr_Type params_
 
vec_dbl_ptr_Type solution_
 
double timeIncrement_
 
default_go globalElementID_
 
vec_dbl_Type constOutputField_
 

Friends

class AssembleFEFactory< SC, LO, GO, NO >
 

Constructor & Destructor Documentation

◆ AssembleFENavierStokes()

template<class SC, class LO, class GO, class NO>
FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::AssembleFENavierStokes ( int flag,
vec2D_dbl_Type nodesRefConfig,
ParameterListPtr_Type parameters,
tuple_disk_vec_ptr_Type tuple )
protected

Constructor for AssembleFEAceNavierStokes.

Parameters
[in]flagFlag of element
[in]nodesRefConfigNodes of element in reference configuration
[in]paramsParameterlist for current problem
[in]tuplevector of element information tuples.

Tupel construction follows follwing pattern: string: Physical Entity (i.e. Velocity) , string: Discretisation (i.e. "P2"), int: Degrees of Freedom per Node, int: Number of Nodes per element)

Here is the call graph for this function:

Member Function Documentation

◆ assembleJacobian()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assembleJacobian ( )
overridevirtual

Assemble the element Jacobian matrix.

Implements FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >.

◆ assembleJacobianBlock()

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assembleJacobianBlock ( LO i)
inlineoverridevirtual

Assemble the element Jacobian matrix.

Parameters
[in]blockID i

Implements FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >.

◆ assembleRHS()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assembleRHS ( )
overridevirtual

Assemble the element right hand side vector.

Implements FEDD::AssembleFE< default_sc, default_lo, default_go, default_no >.

Here is the call graph for this function:

◆ assemblyAdvection()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assemblyAdvection ( SmallMatrixPtr_Type & elementMatrix)
protected

Assembly advection vector field $ \int_T \nabla v \cdot u(\nabla u) ~dx$.

Parameters
[in]&elementMatrix
Here is the call graph for this function:
Here is the caller graph for this function:

◆ assemblyAdvectionInU()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assemblyAdvectionInU ( SmallMatrixPtr_Type & elementMatrix)
protected

Assembly advection vector field in u
TODO: [JK] What is this? Is this the portion that needs to be added for Newton's method? Basically: A+N+W, A:Laplace, N is assemblyAdvection and W is assemblyAdvectionInU?

Parameters
[in]&elementMatrix
Here is the call graph for this function:

◆ assemblyDivAndDivT()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assemblyDivAndDivT ( SmallMatrixPtr_Type & elementMatrix)
protected

Assembly $ \int_T  div(v) p ~dx$ / $ \int_T  div(u) q ~dx$.

Parameters
[in]&elementMatrix
Here is the call graph for this function:
Here is the caller graph for this function:

◆ assemblyLaplacian()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::assemblyLaplacian ( SmallMatrixPtr_Type & elementMatrix)
protected

Assembly function for vector values laplacian $ \int_T \nabla v \cdot \nabla u ~dx$.

Parameters
[in]&elementMatrix
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildTransformation()

template<class SC, class LO, class GO, class NO>
void FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::buildTransformation ( SmallMatrix< SC > & B)
protected

Building Transformation.

Parameters
[in]&B
Here is the caller graph for this function:

Member Data Documentation

◆ dofsVelocity_

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
int FEDD::AssembleFENavierStokes< SC, LO, GO, NO >::dofsVelocity_
protected
Todo

Why do we need dofs1_ and dofs2_ in the abstract class? I think, we should think about a general framework for this

Put into Parameterlist.


The documentation for this class was generated from the following files: