Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
FEDD::Problem< SC, LO, GO, NO > Class Template Referenceabstract

Public Types

typedef Domain< SC, LO, GO, NO > Domain_Type
 
typedef Teuchos::RCP< const Domain_TypeDomainConstPtr_Type
 
typedef std::vector< DomainConstPtr_Type > DomainConstPtr_vec_Type
 
typedef Matrix< SC, LO, GO, NO > Matrix_Type
 
typedef Teuchos::RCP< Matrix_TypeMatrixPtr_Type
 
typedef Matrix_Type::Map_Type Map_Type
 
typedef Matrix_Type::MapPtr_Type MapPtr_Type
 
typedef Matrix_Type::MapConstPtr_Type MapConstPtr_Type
 
typedef BlockMatrix< SC, LO, GO, NO > BlockMatrix_Type
 
typedef Teuchos::RCP< BlockMatrix_TypeBlockMatrixPtr_Type
 
typedef Teuchos::RCP< const BlockMatrix_TypeBlockMatrixConstPtr_Type
 
typedef MultiVector< SC, LO, GO, NO > MultiVector_Type
 
typedef Teuchos::RCP< MultiVector_TypeMultiVectorPtr_Type
 
typedef Teuchos::RCP< const MultiVector_TypeMultiVectorConstPtr_Type
 
typedef BlockMultiVector< SC, LO, GO, NO > BlockMultiVector_Type
 
typedef Teuchos::RCP< BlockMultiVector_TypeBlockMultiVectorPtr_Type
 
typedef Teuchos::RCP< const BlockMultiVector_TypeBlockMultiVectorConstPtr_Type
 
typedef Preconditioner< SC, LO, GO, NO > Preconditioner_Type
 
typedef Teuchos::RCP< Preconditioner_TypePreconditionerPtr_Type
 
typedef Teuchos::RCP< const Preconditioner_TypePreconditionerConstPtr_Type
 
typedef BCBuilder< SC, LO, GO, NO > BC_Type
 
typedef Teuchos::RCP< BC_TypeBCPtr_Type
 
typedef Teuchos::RCP< const BC_TypeBCConstPtr_Type
 
typedef FE< SC, LO, GO, NO > FEFac_Type
 
typedef Teuchos::RCP< FEFac_TypeFEFacPtr_Type
 
typedef Teuchos::RCP< const FEFac_TypeFEFacConstPtr_Type
 
typedef Teuchos::ParameterList ParameterList_Type
 
typedef Teuchos::RCP< ParameterList_Type > ParameterListPtr_Type
 
typedef Teuchos::RCP< Stratimikos::DefaultLinearSolverBuilder > LinSolverBuilderPtr_Type
 
typedef Teuchos::RCP< const Stratimikos::DefaultLinearSolverBuilder > LinSolverBuilderConstPtr_Type
 
typedef Teuchos::Comm< int > Comm_Type
 
typedef Teuchos::RCP< const Comm_Type > CommConstPtr_Type
 
typedef Teuchos::ArrayRCP< GO > GOVecPtr
 
typedef std::vector< std::string > string_vec_Type
 
typedef Teuchos::RCP< Thyra::PreconditionerBase< SC > > ThyraPrecPtr_Type
 
typedef Teuchos::RCP< Thyra::LinearOpBase< SC > > ThyraLinOpPtr_Type
 

Public Member Functions

 Problem (CommConstPtr_Type comm)
 
 Problem (ParameterListPtr_Type &parameterList, CommConstPtr_Type comm)
 
virtual void info ()=0
 
void infoProblem ()
 
void addVariable (const DomainConstPtr_Type &domain, std::string FEType, std::string name, int dofsPerNode)
 
void addRhsFunction (RhsFunc_Type func)
 
void addRhsFunction (RhsFunc_Type func, int i)
 
RhsFunc_Type & getRhsFunction (int i)
 
virtual void assemble (std::string type) const =0
 
void assembleSourceTerm (double time=0.) const
 
void assembleVolumeTerm (double time) const
 
void assembleSurfaceTerm (double time) const
 
bool hasSourceTerm () const
 
int solve (BlockMultiVectorPtr_Type rhs=Teuchos::null)
 
void setupPreconditioner (std::string type="Monolithic") const
 
void initializePreconditioner (std::string type="Monolithic") const
 
void addBoundaries (const BCConstPtr_Type &bcFactory)
 
void setBoundaries (double time=.0) const
 
void setBoundariesRHS (double time=.0) const
 
void setAllDirichletZero (BlockMultiVectorPtr_Type rhs) const
 
void setBoundariesSystem () const
 
void initializeProblem (int nmbVectors=1)
 
void initializeVectors (int nmbVectors=1)
 
BlockMultiVectorPtr_Type getRhs ()
 
BlockMultiVectorPtr_Type getRhs () const
 
BlockMultiVectorPtr_Type getSolution ()
 
BlockMatrixPtr_Type getSystem () const
 
PreconditionerPtr_Type getPreconditioner ()
 
PreconditionerConstPtr_Type getPreconditionerConst () const
 
void setPreconditionerThyraFromLinOp (ThyraLinOpPtr_Type precLinOp)
 
void initializeSolverBuilder () const
 
bool getVerbose () const
 
FEFacConstPtr_Type getFEFactory ()
 
BCConstPtr_Type getBCFactory ()
 
DomainConstPtr_Type getDomain (int i) const
 
DomainConstPtr_vec_Type getDomainVector () const
 
std::string getFEType (int i) const
 
std::string getVariableName (int i) const
 
int getDofsPerNode (int i) const
 
ParameterListPtr_Type getParameterList () const
 
void addToRhs (BlockMultiVectorPtr_Type x) const
 
BlockMultiVectorPtr_Type getSourceTerm ()
 
void initSolutionWithVector (MultiVector_Type &mv)
 
LinSolverBuilderPtr_Type getLinearSolverBuilder () const
 
CommConstPtr_Type getComm () const
 
virtual void getValuesOfInterest (vec_dbl_Type &values)=0
 
virtual void computeValuesOfInterestAndExport ()=0
 
void addParemeterRhs (double para)
 
double calculateH1Norm (MultiVectorConstPtr_Type mv, int blockId1=0, int blockId2=0, int domainInd=0)
 
double calculateL2Norm (MultiVectorConstPtr_Type mv, int domainInd=0)
 

Public Attributes

int dim_
 
CommConstPtr_Type comm_
 
BlockMatrixPtr_Type system_
 
BlockMultiVectorPtr_Type rhs_
 
BlockMultiVectorPtr_Type solution_
 
PreconditionerPtr_Type preconditioner_
 
LinSolverBuilderPtr_Type linearSolverBuilder_
 
bool verbose_
 
std::vector< RhsFunc_Type > rhsFuncVec_
 
vec_dbl_Type parasSourceFunc_
 

Protected Attributes

ParameterListPtr_Type parameterList_
 
DomainConstPtr_vec_Type domainPtr_vec_
 
string_vec_Type domain_FEType_vec_
 
string_vec_Type variableName_vec_
 
BCConstPtr_Type bcFactory_
 
FEFacPtr_Type feFactory_
 
std::vector< int > dofsPerNode_vec_
 
BlockMultiVectorPtr_Type sourceTerm_
 

Member Function Documentation

◆ addRhsFunction() [1/2]

template<class SC, class LO, class GO, class NO>
void FEDD::Problem< SC, LO, GO, NO >::addRhsFunction ( RhsFunc_Type func)

Add right hand side function for each block, if you want to skip a block add a dummy function -> Error Warning. In case initializeProblem() is called beforehand the rhsVec is already initialized with a certain size. --> This leads to a problem, if addRhsFunction is called after, as it is a push_back operation.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addRhsFunction() [2/2]

template<class SC, class LO, class GO, class NO>
void FEDD::Problem< SC, LO, GO, NO >::addRhsFunction ( RhsFunc_Type func,
int i )

Add right hand side function for block i

Here is the call graph for this function:

◆ assemble()

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
virtual void FEDD::Problem< SC, LO, GO, NO >::assemble ( std::string type) const
pure virtual

◆ getRhsFunction()

template<class SC, class LO, class GO, class NO>
RhsFunc_Type & FEDD::Problem< SC, LO, GO, NO >::getRhsFunction ( int i)

Adds rhs function and specifies it so certain flag

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ sourceTerm_

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
BlockMultiVectorPtr_Type FEDD::Problem< SC, LO, GO, NO >::sourceTerm_
protected

sourceTerm_: Is a source term or a surface integral. Fill parasSourceFunc_ for additional parameters


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