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

Public Types

Public Types
typedef Problem< SC, LO, GO, NO > Problem_Type
typedef Problem_Type::Matrix_Type Matrix_Type
typedef Problem_Type::MatrixPtr_Type MatrixPtr_Type
typedef Problem_Type::MapConstPtr_Type MapConstPtr_Type
typedef Problem_Type::BlockMatrix_Type BlockMatrix_Type
typedef Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type
typedef Problem_Type::MultiVector_Type MultiVector_Type
typedef Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type
typedef Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type
typedef Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type
typedef Problem_Type::DomainConstPtr_Type DomainConstPtr_Type
typedef Problem_Type::CommConstPtr_Type CommConstPtr_Type
typedef NonLinearProblem< SC, LO, GO, NO > NonLinearProblem_Type
typedef NonLinearProblem_Type::BlockMultiVectorPtrArray_Type BlockMultiVectorPtrArray_Type
Public Types inherited from FEDD::NonLinearProblem< default_sc, default_lo, default_go, default_no >
typedef Problem< default_sc, default_lo, default_go, default_no > Problem_Type
typedef Problem_Type::CommConstPtr_Type CommConstPtr_Type
typedef Problem_Type::MapConstPtr_Type MapConstPtr_Type
typedef Problem_Type::MultiVector_Type MultiVector_Type
typedef Problem_Type::MultiVectorPtr_Type MultiVectorPtr_Type
typedef Problem_Type::MultiVectorConstPtr_Type MultiVectorConstPtr_Type
typedef Problem_Type::BlockMultiVector_Type BlockMultiVector_Type
typedef Problem_Type::BlockMultiVectorPtr_Type BlockMultiVectorPtr_Type
typedef Problem_Type::Matrix_Type Matrix_Type
typedef Problem_Type::MatrixPtr_Type MatrixPtr_Type
typedef Problem_Type::BlockMatrix_Type BlockMatrix_Type
typedef Problem_Type::BlockMatrixPtr_Type BlockMatrixPtr_Type
typedef Tpetra::Map< default_lo, default_go, default_no > TpetraMap_Type
typedef Teuchos::RCP< TpetraMap_Type > TpetraMapPtr_Type
typedef Teuchos::RCP< const TpetraMap_Type > TpetraMapConstPtr_Type
typedef const TpetraMapConstPtr_Type TpetraMapConstPtrConst_Type
typedef BlockMap< default_lo, default_go, default_no > BlockMap_Type
typedef Teuchos::RCP< BlockMap_Type > BlockMapPtr_Type
typedef Teuchos::RCP< const BlockMap_Type > BlockMapConstPtr_Type
typedef Teuchos::Array< BlockMultiVectorPtr_Type > BlockMultiVectorPtrArray_Type
using ThyraTypes
using TpetraTypes
using ThyraVecSpace_Type
typedef Teuchos::RCP< const ThyraVecSpace_Type > ThyraVecSpaceConstPtr_Type
using ThyraVec_Type
using TpetraMatrix_Type
using ThyraOp_Type
using TpetraOp_Type
typedef Thyra::BlockedLinearOpBase< default_sc > ThyraBlockOp_Type
Public Types inherited from FEDD::Problem< default_sc, default_lo, default_go, default_no >
typedef Domain< default_sc, default_lo, default_go, default_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< default_sc, default_lo, default_go, default_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< default_sc, default_lo, default_go, default_no > BlockMatrix_Type
typedef Teuchos::RCP< BlockMatrix_Type > BlockMatrixPtr_Type
typedef Teuchos::RCP< const BlockMatrix_Type > BlockMatrixConstPtr_Type
typedef MultiVector< default_sc, default_lo, default_go, default_no > MultiVector_Type
typedef Teuchos::RCP< MultiVector_Type > MultiVectorPtr_Type
typedef Teuchos::RCP< const MultiVector_Type > MultiVectorConstPtr_Type
typedef BlockMultiVector< default_sc, default_lo, default_go, default_no > BlockMultiVector_Type
typedef Teuchos::RCP< BlockMultiVector_Type > BlockMultiVectorPtr_Type
typedef Teuchos::RCP< const BlockMultiVector_Type > BlockMultiVectorConstPtr_Type
typedef Preconditioner< default_sc, default_lo, default_go, default_no > Preconditioner_Type
typedef Teuchos::RCP< Preconditioner_Type > PreconditionerPtr_Type
typedef Teuchos::RCP< const Preconditioner_Type > PreconditionerConstPtr_Type
typedef BCBuilder< default_sc, default_lo, default_go, default_no > BC_Type
typedef Teuchos::RCP< BC_Type > BCPtr_Type
typedef Teuchos::RCP< const BC_Type > BCConstPtr_Type
typedef FE< default_sc, default_lo, default_go, default_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< default_go > GOVecPtr
typedef std::vector< std::string > string_vec_Type
typedef Teuchos::RCP< Thyra::PreconditionerBase< default_sc > > ThyraPrecPtr_Type
using ThyraTypes
using ThyraLinOpPtr_Type

Constructor/Destructor

Teuchos::RCP< TimeSteppingToolstimeSteppingTool_
 NonLinElasticity (const DomainConstPtr_Type &domain, std::string FEType, ParameterListPtr_Type parameterList)
virtual void info ()
virtual void assemble (std::string type="") const
 assemble of type exectuted by the derived specific non-linear problem classes
void reAssemble (std::string type) const
void reAssemble (BlockMultiVectorPtr_Type previousSolution) const override
virtual void reAssemble (MatrixPtr_Type &massmatrix, std::string type) const
virtual void reAssembleExtrapolation (BlockMultiVectorPtrArray_Type previousSolutions)
virtual void calculateNonLinResidualVec (std::string type, double time=0.) const
 Virtual function which is implemented in the specific non-linear problem classes to calculate the non-linear residual vector.
void getValuesOfInterest (vec_dbl_Type &values) override
 Virtual class to extract values of interest that are computed during the solve.
void computeValuesOfInterestAndExport () override
void assembleSourceTermLoadstepping (double time=0.) const
void updateTime () const
void updateConcentration (MultiVectorConstPtr_Type concentration)

Additional Inherited Members

Public Member Functions inherited from FEDD::NonLinearProblem< default_sc, default_lo, default_go, default_no >
 NonLinearProblem (CommConstPtr_Type comm)
 Constructor.
void infoNonlinProblem ()
 Information about the non-linear problem.
void initializeProblem (int nmbVectors=1)
 Initialisation of the non-linear problem with system, vectors, and Thyra vector spaces for NOX.
int solveAndUpdate (const std::string &criterion, double &criterionValue)
 Solving the non-linear problem and updating the solution.
int solveUpdate ()
 This is where the linear solve specifically happens.
virtual void reAssemble (BlockMultiVectorPtr_Type previousSolution) const=0
 Reassemble with previous solution. I think it is not used anymore. @TODO: Look into this.
void reAssembleAndFill (BlockMatrixPtr_Type bMat, std::string type="FixedPoint")
virtual void reAssembleExtrapolation (BlockMultiVectorPtrArray_Type previousSolutions)=0
void initializeVectorsNonLinear (int nmbVectors=1)
 Initialisation of the non-linear vectors like residual and previous solution.
double calculateResidualNorm () const
 Calculate the 2-norm of the residual vector.
BlockMultiVectorPtr_Type getResidualVector () const
 Get the residual vector.
BlockMultiVectorPtr_Type getPreviousSolution () const
 Get previous solution. Needed for time-dependent problems.
virtual Thyra::ModelEvaluatorBase::InArgs< default_sc > getNominalValues () const
virtual Teuchos::RCP< const ::Thyra::VectorSpaceBase< default_sc > > get_x_space () const
virtual Teuchos::RCP< const ::Thyra::VectorSpaceBase< default_sc > > get_f_space () const
virtual ::Thyra::ModelEvaluatorBase::InArgs< default_sc > createInArgs () const
void initNOXParameters ()
void initVectorSpaces ()
void initVectorSpacesMonolithic ()
void initVectorSpacesBlock ()
virtual ::Thyra::ModelEvaluatorBase::OutArgs< default_sc > createOutArgsImpl () const
void setNonlinearIterationStep (int newtonStep)
int getNonlinearIterationStep () const override
Teuchos::RCP< Thyra::LinearOpBase< default_sc > > create_W_op () const
 Block Approach for Nonlinear Solver NOX. Input. Includes calculation of the residual vector and update (reAssembly) of non constant matrices with new solution. ResidualVec and SystemMatrix of this class are then converted into the corresponding Thyra/Tpetra objects for Solver.
Teuchos::RCP< Thyra::LinearOpBase< default_sc > > create_W_op_Monolithic () const
Teuchos::RCP< Thyra::PreconditionerBase< default_sc > > create_W_prec () const
Public Member Functions inherited from FEDD::Problem< default_sc, default_lo, default_go, default_no >
 Problem (CommConstPtr_Type comm)
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)
RhsFunc_Type & getRhsFunction (int i)
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 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
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 inherited from FEDD::NonLinearProblem< default_sc, default_lo, default_go, default_no >
double nonLinearTolerance_
BlockMultiVectorPtr_Type previousSolution_
BlockMultiVectorPtr_Type residualVec_
SmallMatrix< double > coeff_
int newtonStep_
Public Attributes inherited from FEDD::Problem< default_sc, default_lo, default_go, default_no >
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 inherited from FEDD::Problem< default_sc, default_lo, default_go, default_no >
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

◆ assemble()

template<class SC, class LO, class GO, class NO>
void FEDD::NonLinElasticity< SC, LO, GO, NO >::assemble ( std::string type = "") const
virtual

assemble of type exectuted by the derived specific non-linear problem classes

Parameters
typefor example Newton

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

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

◆ calculateNonLinResidualVec()

template<class SC, class LO, class GO, class NO>
void FEDD::NonLinElasticity< SC, LO, GO, NO >::calculateNonLinResidualVec ( std::string type,
double time = 0. ) const
virtual

Virtual function which is implemented in the specific non-linear problem classes to calculate the non-linear residual vector.

Parameters
typestandard or reverse depending on Newton formulation, e.g. as in NOX or FEDDLib-Newton
timecurrent timestep

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

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

◆ computeValuesOfInterestAndExport()

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

◆ getValuesOfInterest()

template<class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
void FEDD::NonLinElasticity< SC, LO, GO, NO >::getValuesOfInterest ( vec_dbl_Type & values)
inlineoverridevirtual

Virtual class to extract values of interest that are computed during the solve.

Parameters
values

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

◆ info()

template<class SC, class LO, class GO, class NO>
void FEDD::NonLinElasticity< SC, LO, GO, NO >::info ( )
virtual

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