LifeV
|
MonolithicBlockComposedDN - Short description of the class. More...
#include <MonolithicBlockComposedDN.hpp>
Public Member Functions | |
MonolithicBlockComposedDN (const std::vector< Int > &flag, const std::vector< Int > &order) | |
Public Member Functions inherited from MonolithicBlockComposed | |
MonolithicBlockComposed (const std::vector< Int > &flags, const std::vector< Int > &order) | |
Constructor. More... | |
~MonolithicBlockComposed () | |
void | GlobalAssemble () |
runs GlobalAssemble on the blocks More... | |
virtual void | blockAssembling () |
sums the coupling matrices with the corresponding blocks More... | |
void | coupler (mapPtr_Type &map, const std::map< ID, ID > &locDofMap, const vectorPtr_Type &numerationInterface, const Real &timeStep, const Real &coefficient, const Real &rescaleFactor, UInt couplingBlock) |
adds a default coupling matrix for a specified block. More... | |
virtual void | push_back_matrix (const matrixPtr_Type &Mat, const bool recompute) |
pushes a block at the end of the vector More... | |
virtual void | push_back_oper (MonolithicBlockComposed &Oper) |
Merges an input MonolithicBlockComposed operator with this one. More... | |
virtual void | push_back_coupling (matrixPtr_Type &coupling) |
Pushes an extra coupling matrix at the end of the vector of coupling matrices. More... | |
virtual void | replace_matrix (const matrixPtr_Type &oper, UInt position) |
replaces a block More... | |
virtual void | replace_coupling (const matrixPtr_Type &Mat, UInt index) |
replaces a coupling block More... | |
virtual void | addToCoupling (const matrixPtr_Type &Mat, UInt position) |
pushes a block at the end of the vector More... | |
void | addToCoupling (const Real &entry, UInt row, UInt col, UInt position) |
const std::vector< bool > & | recompute () |
returns the vector of flags (by const reference). More... | |
const std::vector< matrixPtr_Type > & | couplingVector () const |
returns the vector of pointers to the coupling blocks (by const reference). More... | |
void | setRecompute (UInt position, bool flag) |
turns on/off the recomputation of the preconditioner for a specified factor More... | |
const UInt | whereIsBlock (UInt position) const |
Public Member Functions inherited from MonolithicBlock | |
virtual void | replace_bch (bchandlerPtr_Type &, UInt) |
replaces a BCHandler More... | |
virtual void | applyBoundaryConditions (const Real &time) |
Applies the correspondent boundary conditions to every block. More... | |
virtual void | applyBoundaryConditions (const Real &time, const UInt block) |
Applies the correspondent boundary conditions to a specified block. More... | |
virtual void | resetBlocks () |
resets the blocks (frees the shared pointers) More... | |
virtual void | reset () |
resets the blocks, boundary conditions, FE spaces. More... | |
virtual void | setRobin (matrixPtr_Type &, vectorPtr_Type &) |
Applies the robin preconditioners. More... | |
void | couplingMatrix (matrixPtr_Type &bigMatrix, Int flag, const std::vector< fespacePtr_Type > &problem, const std::vector< UInt > &offset, const std::map< ID, ID > &locDofMap, const vectorPtr_Type &numerationInterface, const Real &timeStep=1.e-3, const Real &value=1., const Real &coefficient=1., const Real &rescaleFactor=1.) |
builds the coupling matrix. More... | |
void | setConditions (std::vector< bchandlerPtr_Type > &vec) |
sets the vector of raw pointer to the BCHandler More... | |
void | setSpaces (std::vector< fespacePtr_Type > &vec) |
sets the vector of raw pointer to the FESpaces More... | |
void | setOffsets (UInt blocks,...) |
sets the vector of raw pointer to the offsets of the different blocks More... | |
void | robinCoupling (MonolithicBlock::matrixPtr_Type &matrix, Real &alphaf, Real &alphas, UInt coupling, const MonolithicBlock::fespacePtr_Type &FESpace1, const UInt &offset1, const MonolithicBlock::fespacePtr_Type &FESpace2, const UInt &offset2, const std::map< ID, ID > &locDofMap, const MonolithicBlock::vectorPtr_Type &numerationInterface) |
computes the Robin coupling matrix More... | |
virtual void | addToBlock (const matrixPtr_Type &Mat, UInt position) |
virtual void | push_back_oper (MonolithicBlock &Oper) |
Pushes a new block. More... | |
MonolithicBlock () | |
Empty Constructor. More... | |
virtual | ~MonolithicBlock () |
Destructor. More... | |
virtual void | setupSolver (solver_Type &, const GetPot &) |
Sets the parameters needed by the preconditioner from data file. More... | |
virtual void | replace_precs (const epetraOperatorPtr_Type &, UInt) |
replace a block preconditioner More... | |
virtual void | push_back_precs (const epetraOperatorPtr_Type &) |
pushes back a block preconditioner More... | |
const std::vector< matrixPtr_Type > & | blockVector () |
returns the vector of pointers to the blocks (by const reference). More... | |
const std::vector< bchandlerPtr_Type > & | BChVector () |
returns the vector of pointers to the BCHandlers (by const reference). More... | |
const std::vector< fespacePtr_Type > & | FESpaceVector () |
returns the vector of pointers to the FE spaces (by const reference). More... | |
const std::vector< UInt > & | offsetVector () |
returns the vector of the offsets (by const reference). More... | |
public methods | |
void | setDataFromGetPot (const GetPot &dataFile, const std::string §ion) |
sets the parameters related to M_blockPrecs from the data file More... | |
int | solveSystem (const vector_Type &rhs, vector_Type &step, solverPtr_Type &linearSolver) |
Solves the preconditioned linear system. More... | |
virtual void | coupler (mapPtr_Type &map, const std::map< ID, ID > &locDofMap, const vectorPtr_Type &numerationInterface, const Real &timeStep, const Real &coefficient, const Real &rescaleFactor) |
Computes the coupling. More... | |
virtual void | push_back_precs (matrixPtr_Type &Mat) |
pushes back the preconditioner for a block More... | |
bool | set () |
returns the true if the preconditioner has at leas one factor computed More... | |
void | setComm (std::shared_ptr< Epetra_Comm > comm) |
const std::vector< std::shared_ptr< Preconditioner > > & | blockPrecs () const |
Factory Methods | |
static MonolithicBlock * | createComposedDN () |
static MonolithicBlock * | createComposedDN2 () |
static MonolithicBlock * | createComposedDNGI () |
static MonolithicBlock * | createComposedDN2GI () |
Protected Methods | |
virtual void | replace_precs (matrixPtr_Type &Mat, UInt position) |
Protected Methods. More... | |
Protected Members | |
std::shared_ptr< PreconditionerComposed > | M_blockPrecs |
Additional Inherited Members | |
Protected Member Functions inherited from MonolithicBlockComposed | |
void | blockAssembling (const UInt k) |
sums the coupling matrix in the specified position with the corresponding block More... | |
virtual void | swap (const UInt i, const UInt j) |
swaps the blocks More... | |
Protected Member Functions inherited from MonolithicBlock | |
template<typename Operator > | |
void | swap (std::shared_ptr< Operator > &operFrom, std::shared_ptr< Operator > &OperTo) |
swaps two std::shared_ptr. The tamplate argument of the shared_ptr is templated More... | |
template<typename Operator > | |
void | insert (std::vector< Operator > &operFrom, std::vector< Operator > &OperTo) |
swaps two std::shared_ptr. The tamplate argument of the shared_ptr is templated More... | |
Protected Attributes inherited from MonolithicBlockComposed | |
std::vector< bool > | M_recompute |
vector of flags saying if the matrix is to be recomputed every time More... | |
std::vector< matrixPtr_Type > | M_coupling |
vector of coupling matrices More... | |
std::unique_ptr< std::vector< Int > > | M_couplingFlags |
vector of flags specifying the coupling strategy for each block. More... | |
std::unique_ptr< std::vector< Int > > | M_blockReordering |
vector of reordering for the different blocks. More... | |
Protected Attributes inherited from MonolithicBlock | |
std::vector< bchandlerPtr_Type > | M_bch |
std::vector< matrixPtr_Type > | M_blocks |
std::vector< fespacePtr_Type > | M_FESpace |
std::vector< UInt > | M_offset |
vectorPtr_Type | M_numerationInterface |
std::shared_ptr< Epetra_Comm > | M_comm |
MonolithicBlockComposedDN - Short description of the class.
Definition at line 86 of file MonolithicBlockComposedDN.hpp.
typedef MonolithicBlockComposed super_Type |
Definition at line 89 of file MonolithicBlockComposedDN.hpp.
|
inline |
Definition at line 91 of file MonolithicBlockComposedDN.hpp.
|
virtual |
sets the parameters related to M_blockPrecs from the data file
Public Methods.
dataFile | GetPot data file |
section | string identifying the section in the data file |
Implements MonolithicBlockComposed.
Definition at line 40 of file MonolithicBlockComposedDN.cpp.
|
virtual |
Solves the preconditioned linear system.
Provided the linear solver and the right hand side this method computes the solution and returns it into the result vector.
rhs | right hand side of the linear system |
result | output result |
linearSolver | the linear system |
Implements MonolithicBlockComposed.
Definition at line 47 of file MonolithicBlockComposedDN.cpp.
|
virtual |
Computes the coupling.
computes all the coupling blocks specific for the chosen preconditioner. The coupling is handled through an augmented formulation, introducing new variables (multipliers). Needs as input: the global map of the problem, the FESpaces of the subproblems to be coupled with their offsets, a std::map holding the two numerations of the interface between the two subproblems (the numeration can be different but the nodes must be matching in each subdomain), an EpetraVector defined on the multipliers map containing the corresponding dof at the interface (NB: the multipliers map should be constructed from the second numeration in the std::map).
In this case the coupling matrices are two: and
Note that the FESpaces and the offsets have to be set before calling this method.
map | the map of the global problem |
locDofMap | std::map with the correspondence between the interface dofs for the two different maps in the subproblems |
numerationInterface | vector containing the correspondence of the Lagrange multipliers with the interface dofs |
Implements MonolithicBlock.
Definition at line 77 of file MonolithicBlockComposedDN.cpp.
|
virtual |
pushes back the preconditioner for a block
In this case M_blockPrecs is of type PreconditionerComposed, thus this method calls PreconditionerComposed::push_back(...) which computes the AAS preconditioner for the input matrix
Mat | input matrix |
Definition at line 101 of file MonolithicBlockComposedDN.cpp.
|
inlinevirtual |
returns the true if the preconditioner has at leas one factor computed
Implements MonolithicBlockComposed.
Definition at line 167 of file MonolithicBlockComposedDN.hpp.
|
inlinevirtual |
copies the shared_ptr to the communicator in the member M_comm and builds the empty ComposedPreconditioneronditioner M_blockPrecs
Reimplemented from MonolithicBlock.
Definition at line 175 of file MonolithicBlockComposedDN.hpp.
|
inline |
Definition at line 181 of file MonolithicBlockComposedDN.hpp.
|
inlinestatic |
Definition at line 190 of file MonolithicBlockComposedDN.hpp.
|
inlinestatic |
Definition at line 200 of file MonolithicBlockComposedDN.hpp.
|
inlinestatic |
Factorization in three:
Definition at line 209 of file MonolithicBlockComposedDN.hpp.
|
inlinestatic |
Factorization in three:
Definition at line 246 of file MonolithicBlockComposedDN.hpp.
|
protectedvirtual |
Protected Methods.
Replaces the preconditioner in M_blockPrecs with another one that is already constructed
Definition at line 112 of file MonolithicBlockComposedDN.cpp.
|
protected |
Pointer to an PreconditionerComposed object containing the preconditioners for each block
Definition at line 301 of file MonolithicBlockComposedDN.hpp.