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< Domain_Type > DomainPtr_Type
typedef Teuchos::RCP< const Domain_Type > DomainConstPtr_Type
typedef std::vector< DomainConstPtr_Type > DomainConstPtr_vec_Type
typedef Matrix< SC, LO, GO, NO > Matrix_Type
typedef Teuchos::RCP< Matrix_Type > MatrixPtr_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_Type > BlockMatrixPtr_Type
typedef Teuchos::RCP< const BlockMatrix_Type > BlockMatrixConstPtr_Type
typedef MultiVector< SC, LO, GO, NO > MultiVector_Type
typedef Teuchos::RCP< MultiVector_Type > MultiVectorPtr_Type
typedef Teuchos::RCP< const MultiVector_Type > MultiVectorConstPtr_Type
typedef BlockMultiVector< SC, LO, GO, NO > BlockMultiVector_Type
typedef Teuchos::RCP< BlockMultiVector_Type > BlockMultiVectorPtr_Type
typedef Teuchos::RCP< const BlockMultiVector_Type > BlockMultiVectorConstPtr_Type
typedef Preconditioner< SC, LO, GO, NO > Preconditioner_Type
typedef Teuchos::RCP< Preconditioner_Type > PreconditionerPtr_Type
typedef Teuchos::RCP< const Preconditioner_Type > PreconditionerConstPtr_Type
typedef BCBuilder< SC, LO, GO, NO > BC_Type
typedef Teuchos::RCP< BC_Type > BCPtr_Type
typedef Teuchos::RCP< const BC_Type > BCConstPtr_Type
typedef FE< SC, LO, GO, NO > FEFac_Type
typedef Teuchos::RCP< FEFac_Type > FEFacPtr_Type
typedef Teuchos::RCP< const FEFac_Type > FEFacConstPtr_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
using ThyraTypes = ThyraTypedefs<SC>
using ThyraLinOpPtr_Type = Teuchos::RCP<typename ThyraTypes::ThyraOp_Type>

Public Member Functions

 Problem (CommConstPtr_Type comm)
 Problem (ParameterListPtr_Type &parameterList, CommConstPtr_Type comm)
virtual void info ()=0
virtual int getNonlinearIterationStep () const
void infoProblem ()
void infoParameter (bool full=true, std::string="empty")
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)
void changeAssFELinearization (std::string linearization)
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()

◆ getNonlinearIterationStep()

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
virtual int FEDD::Problem< SC, LO, GO, NO >::getNonlinearIterationStep ( ) const
inlinevirtual

If we have a Nonlinear Problem, we need the opportunity to know about the current Newton Step -> override in NonLinearProblem Default implementation just returns 0

Reimplemented in FEDD::NonLinearProblem< SC, LO, GO, NO >, FEDD::NonLinearProblem< default_sc, default_lo, default_go, default_no >, and FEDD::NonLinearProblem< SC, LO, GO, NO >.

Here is the caller graph for this function:

◆ 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:

◆ getValuesOfInterest()

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: