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

Public Types

typedef Domain< SC, LO, GO, NO > Domain_Type
 
typedef Teuchos::RCP< Domain_TypeDomainPtr_Type
 
typedef Teuchos::RCP< const Domain_TypeDomainConstPtr_Type
 
typedef std::vector< DomainConstPtr_Type > DomainConstPtr_vec_Type
 
typedef Teuchos::RCP< Mesh< SC, LO, GO, NO > > MeshPtr_Type
 
typedef MeshUnstructured< SC, LO, GO, NO > MeshUnstr_Type
 
typedef Teuchos::RCP< MeshUnstr_TypeMeshUnstrPtr_Type
 
typedef Elements Elements_Type
 
typedef Teuchos::RCP< Elements_TypeElementsPtr_Type
 
typedef Teuchos::RCP< const Elements_TypeElementsConstPtr_Type
 
typedef Matrix< SC, LO, GO, NO > Matrix_Type
 
typedef Teuchos::RCP< Matrix_TypeMatrixPtr_Type
 
typedef Matrix_Type::MapPtr_Type MapPtr_Type
 
typedef Matrix_Type::MapConstPtr_Type MapConstPtr_Type
 
typedef MultiVector< SC, LO, GO, NO > MultiVector_Type
 
typedef Teuchos::RCP< MultiVector_TypeMultiVectorPtr_Type
 
typedef Teuchos::RCP< const MultiVector_TypeMultiVectorConstPtr_Type
 
typedef std::vector< GO > vec_GO_Type
 
typedef std::vector< vec_GO_Type > vec2D_GO_Type
 
typedef std::vector< vec2D_GO_Type > vec3D_GO_Type
 
typedef Teuchos::RCP< vec3D_GO_Type > vec3D_GO_ptr_Type
 
typedef AssembleFE< SC, LO, GO, NO > AssembleFE_Type
 
typedef Teuchos::RCP< AssembleFE_TypeAssembleFEPtr_Type
 
typedef AssembleFENavierStokes< SC, LO, GO, NO > AssembleFENavierStokes_Type
 
typedef Teuchos::RCP< AssembleFENavierStokes_TypeAssembleFENavierStokesPtr_Type
 
typedef AssembleFEGeneralizedNewtonian< SC, LO, GO, NO > AssembleFEGeneralizedNewtonian_Type
 
typedef Teuchos::RCP< AssembleFEGeneralizedNewtonian_TypeAssembleFEGeneralizedNewtonianPtr_Type
 
typedef AssembleFE_SCI_SMC_Active_Growth_Reorientation< SC, LO, GO, NO > AssembleFE_SCI_SMC_Active_Growth_Reorientation_Type
 
typedef Teuchos::RCP< AssembleFE_SCI_SMC_Active_Growth_Reorientation_TypeAssembleFE_SCI_SMC_Active_Growth_Reorientation_Ptr_Type
 
typedef std::vector< AssembleFEPtr_Type > AssembleFEPtr_vec_Type
 
typedef BlockMatrix< SC, LO, GO, NO > BlockMatrix_Type
 
typedef Teuchos::RCP< BlockMatrix_TypeBlockMatrixPtr_Type
 
typedef BlockMultiVector< SC, LO, GO, NO > BlockMultiVector_Type
 
typedef Teuchos::RCP< BlockMultiVector_TypeBlockMultiVectorPtr_Type
 
typedef SmallMatrix< SC > SmallMatrix_Type
 
typedef Teuchos::RCP< SmallMatrix_TypeSmallMatrixPtr_Type
 

Public Member Functions

 FE_ElementAssembly (bool saveAssembly=false)
 
void addFE (DomainConstPtr_Type domain)
 
void doSetZeros (double eps=10 *Teuchos::ScalarTraits< SC >::eps())
 
void assemblyEmptyMatrix (MatrixPtr_Type &A)
 
void assemblyNonlinearLaplace (int dim, std::string FEType, int degree, MultiVectorPtr_Type u_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, ParameterListPtr_Type params, std::string assembleMode, bool callFillComplete=true, int FELocExternal=-1)
 Assembly of Jacobian for nonlinear Laplace example.
 
void assemblyNavierStokes (int dim, std::string FETypeVelocity, std::string FETypePressure, int degree, int dofsVelocity, int dofsPressure, MultiVectorPtr_Type u_rep, MultiVectorPtr_Type p_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, SmallMatrix_Type coeff, ParameterListPtr_Type params, bool reAssemble, std::string assembleMode, bool callFillComplete=true, int FELocExternal=-1)
 Assembly of Jacobian for NavierStokes.
 
void assemblyLaplaceAssFE (int dim, std::string FEType, int degree, int dofs, BlockMatrixPtr_Type &A, bool callFillComplete, int FELocExternal=-1)
 Assembly of constant stiffness matix for laplacian operator $ \Delta $.
 
void assemblyAceDeformDiffu (int dim, std::string FETypeChem, std::string FETypeSolid, int degree, int dofsChem, int dofsSolid, MultiVectorPtr_Type c_rep, MultiVectorPtr_Type d_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, ParameterListPtr_Type params, std::string assembleMode, bool callFillComplete=true, int FELocExternal=-1)
 
void assemblyAceDeformDiffuBlock (int dim, std::string FETypeChem, std::string FETypeSolid, int degree, int dofsChem, int dofsSolid, MultiVectorPtr_Type c_rep, MultiVectorPtr_Type d_rep, BlockMatrixPtr_Type &A, int blockRow, int blockCol, BlockMultiVectorPtr_Type &resVec, int block, ParameterListPtr_Type params, std::string assembleMode, bool callFillComplete=true, int FELocExternal=-1)
 
void advanceInTimeAssemblyFEElements (double dt, MultiVectorPtr_Type d_rep, MultiVectorPtr_Type c_rep)
 
void assemblyLinearElasticity (int dim, std::string FEType, int degree, int dofs, MultiVectorPtr_Type d_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, ParameterListPtr_Type params, bool reAssemble, std::string assembleMode, bool callFillComplete=true, int FELocExternal=-1)
 Assembly of Jacobian.
 
void assemblyNonLinearElasticity (int dim, std::string FEType, int degree, int dofs, MultiVectorPtr_Type d_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, ParameterListPtr_Type params, bool callFillComplete=true, int FELocExternal=-1)
 Assembly of Jacobian for nonlinear Elasticity.
 
void assemblyNonLinearElasticity (int dim, std::string FEType, int degree, int dofs, MultiVectorPtr_Type d_rep, BlockMatrixPtr_Type &A, BlockMultiVectorPtr_Type &resVec, ParameterListPtr_Type params, DomainConstPtr_Type domain, MultiVectorPtr_Type eModVec, bool callFillComplete=true, int FELocExternal=-1)
 Assembly of Jacobian for nonlinear Elasticity.
 
void computeSteadyViscosityFE_CM (int dim, std::string FETypeVelocity, std::string FETypePressure, int dofsVelocity, int dofsPressure, MultiVectorPtr_Type u_rep, MultiVectorPtr_Type p_rep, ParameterListPtr_Type params)
 Postprocessing: Using a converged velocity solution -> compute averaged viscosity inside an element at center of mass.
 
void changeLinearizationFE (std::string linearization)
 Method to loop over all assembleFESpecific elements and set the defined linearization.
 

Public Attributes

BlockMultiVectorPtr_Type const_output_fields
 
DomainConstPtr_vec_Type domainVec_
 

Protected Member Functions

int checkFE (int Dimension, std::string FEType)
 Checks which domain corresponds to certain FE Type and dimension.
 
vec2D_dbl_Type getCoordinates (vec_LO_Type localIDs, vec2D_dbl_ptr_Type points)
 Returns coordinates of local node ids.
 
vec_dbl_Type getSolution (vec_LO_Type localIDs, MultiVectorPtr_Type u_rep, int dofsVelocity)
 Returns entries of u of element.
 

Protected Attributes

bool setZeros_
 
SC myeps_
 
bool saveAssembly_
 

Member Function Documentation

◆ assemblyAceDeformDiffu()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyAceDeformDiffu ( int dim,
std::string FETypeChem,
std::string FETypeSolid,
int degree,
int dofsChem,
int dofsSolid,
MultiVectorPtr_Type c_rep,
MultiVectorPtr_Type d_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
ParameterListPtr_Type params,
std::string assembleMode,
bool callFillComplete = true,
int FELocExternal = -1 )

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:
Here is the caller graph for this function:

◆ assemblyAceDeformDiffuBlock()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyAceDeformDiffuBlock ( int dim,
std::string FETypeChem,
std::string FETypeSolid,
int degree,
int dofsChem,
int dofsSolid,
MultiVectorPtr_Type c_rep,
MultiVectorPtr_Type d_rep,
BlockMatrixPtr_Type & A,
int blockRow,
int blockCol,
BlockMultiVectorPtr_Type & resVec,
int block,
ParameterListPtr_Type params,
std::string assembleMode,
bool callFillComplete = true,
int FELocExternal = -1 )

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:
Here is the caller graph for this function:

◆ assemblyLaplaceAssFE()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyLaplaceAssFE ( int dim,
std::string FEType,
int degree,
int dofs,
BlockMatrixPtr_Type & A,
bool callFillComplete,
int FELocExternal = -1 )

Assembly of constant stiffness matix for laplacian operator $ \Delta $.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal
Here is the call graph for this function:
Here is the caller graph for this function:

◆ assemblyLinearElasticity()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyLinearElasticity ( int dim,
std::string FEType,
int degree,
int dofs,
MultiVectorPtr_Type d_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
ParameterListPtr_Type params,
bool reAssemble,
std::string assembleMode,
bool callFillComplete = true,
int FELocExternal = -1 )

Assembly of Jacobian.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal

Inserting element stiffness matrices into global stiffness matrix

Parameters
[in]&AGlobal Block Matrix
[in]elementMatrixStiffness matrix of one element
[in]elementCorresponding finite element
[in]mapMap that corresponds to repeated nodes of first block
[in]mapMap that corresponds to repeated nodes of second block

Inserting local rhsVec into global residual Mv;

Parameters
[in]resBlockMultiVector of residual vec; Repeated distribution; 2 blocks
[in]rhsVecsorted the same way as residual vec
[in]elementof block1

Assembly of Jacobian for Linear Elasticity

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:
Here is the caller graph for this function:

◆ assemblyNavierStokes()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyNavierStokes ( int dim,
std::string FETypeVelocity,
std::string FETypePressure,
int degree,
int dofsVelocity,
int dofsPressure,
MultiVectorPtr_Type u_rep,
MultiVectorPtr_Type p_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
SmallMatrix_Type coeff,
ParameterListPtr_Type params,
bool reAssemble,
std::string assembleMode,
bool callFillComplete = true,
int FELocExternal = -1 )

Assembly of Jacobian for NavierStokes.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:
Here is the caller graph for this function:

◆ assemblyNonLinearElasticity() [1/2]

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyNonLinearElasticity ( int dim,
std::string FEType,
int degree,
int dofs,
MultiVectorPtr_Type d_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
ParameterListPtr_Type params,
bool callFillComplete = true,
int FELocExternal = -1 )

Assembly of Jacobian for nonlinear Elasticity.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:
Here is the caller graph for this function:

◆ assemblyNonLinearElasticity() [2/2]

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyNonLinearElasticity ( int dim,
std::string FEType,
int degree,
int dofs,
MultiVectorPtr_Type d_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
ParameterListPtr_Type params,
DomainConstPtr_Type domain,
MultiVectorPtr_Type eModVec,
bool callFillComplete = true,
int FELocExternal = -1 )

Assembly of Jacobian for nonlinear Elasticity.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]AResulting matrix
[in]callFillCompleteIf Matrix A should be completely filled at end of function
[in]FELocExternal

Tupel construction follows follwing pattern: std::string: Physical Entity (i.e. Velocity) , std::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:

◆ assemblyNonlinearLaplace()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::assemblyNonlinearLaplace ( int dim,
std::string FEType,
int degree,
MultiVectorPtr_Type u_rep,
BlockMatrixPtr_Type & A,
BlockMultiVectorPtr_Type & resVec,
ParameterListPtr_Type params,
std::string assembleMode,
bool callFillComplete = true,
int FELocExternal = -1 )

Assembly of Jacobian for nonlinear Laplace example.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]u_repThe current solution
[in]AResulting matrix
[in]resVecResulting residual
[in]paramsParams needed by the problem. Placeholder for now.
[in]assembleModeWhat should be assembled i.e. Rhs (residual) or the Jacobian
[in]callFillCompleteIf Matrix A should be redistributed across MPI procs at end of function
[in]FELocExternal?
Here is the call graph for this function:
Here is the caller graph for this function:

◆ changeLinearizationFE()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::changeLinearizationFE ( std::string linearization)

Method to loop over all assembleFESpecific elements and set the defined linearization.

Parameters
[in]stringlinearization e.g. "Picard" or "Newton"
Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeSteadyViscosityFE_CM()

template<class SC, class LO, class GO, class NO>
void FEDD::FE_ElementAssembly< SC, LO, GO, NO >::computeSteadyViscosityFE_CM ( int dim,
std::string FETypeVelocity,
std::string FETypePressure,
int dofsVelocity,
int dofsPressure,
MultiVectorPtr_Type u_rep,
MultiVectorPtr_Type p_rep,
ParameterListPtr_Type params )

Postprocessing: Using a converged velocity solution -> compute averaged viscosity inside an element at center of mass.

Parameters
[in]dimDimension
[in]FETypeFE Discretization
[in]degreeDegree of basis function
[in]repeatedsolution fields for u and p
[in]parameterlists
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCoordinates()

template<class SC, class LO, class GO, class NO>
vec2D_dbl_Type FEDD::FE_ElementAssembly< SC, LO, GO, NO >::getCoordinates ( vec_LO_Type localIDs,
vec2D_dbl_ptr_Type points )
protected

Returns coordinates of local node ids.

Parameters
[in]localIDs
[in]points
[out]coordinates
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSolution()

template<class SC, class LO, class GO, class NO>
vec_dbl_Type FEDD::FE_ElementAssembly< SC, LO, GO, NO >::getSolution ( vec_LO_Type localIDs,
MultiVectorPtr_Type u_rep,
int dofsVelocity )
protected

Returns entries of u of element.

Parameters
[in]localIDs
[in]points
[out]coordinates
Here is the call graph for this function:
Here is the caller graph for this function:

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