LifeV
MonolithicBlockComposedDN Class Reference

MonolithicBlockComposedDN - Short description of the class. More...

#include <MonolithicBlockComposedDN.hpp>

+ Inheritance diagram for MonolithicBlockComposedDN:
+ Collaboration diagram for MonolithicBlockComposedDN:

Public Types

typedef MonolithicBlockComposed super_Type
 
- Public Types inherited from MonolithicBlockComposed
enum  Block { solid, fluid, mesh }
 
typedef MonolithicBlock super_Type
 
typedef super_Type::fespacePtr_Type fespacePtr_Type
 
typedef ComposedOperator< Epetra_OperatoroperatorPtr_Type
 
- Public Types inherited from MonolithicBlock
typedef VectorEpetra vector_Type
 
typedef std::shared_ptr< vector_TypevectorPtr_Type
 
typedef MatrixEpetra< Realmatrix_Type
 
typedef std::shared_ptr< matrix_TypematrixPtr_Type
 
typedef std::shared_ptr< Epetra_OperatorepetraOperatorPtr_Type
 
typedef std::shared_ptr< Preconditionerepetra_preconditioner_ptrtype
 
typedef matrix_Type::matrix_type epetraMatrix_Type
 
typedef SolverAztecOO solver_Type
 
typedef std::shared_ptr< SolverAztecOOsolverPtr_Type
 
typedef FESpace< RegionMesh< LinearTetra >, MapEpetrafespace_Type
 
typedef std::shared_ptr< fespace_TypefespacePtr_Type
 
typedef std::shared_ptr< MapEpetramapPtr_Type
 
typedef std::shared_ptr< BCHandlerbchandlerPtr_Type
 

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 &section)
 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 MonolithicBlockcreateComposedDN ()
 
static MonolithicBlockcreateComposedDN2 ()
 
static MonolithicBlockcreateComposedDNGI ()
 
static MonolithicBlockcreateComposedDN2GI ()
 

Protected Methods

virtual void replace_precs (matrixPtr_Type &Mat, UInt position)
 Protected Methods. More...
 

Protected Members

std::shared_ptr< PreconditionerComposedM_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_TypeM_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_TypeM_bch
 
std::vector< matrixPtr_TypeM_blocks
 
std::vector< fespacePtr_TypeM_FESpace
 
std::vector< UIntM_offset
 
vectorPtr_Type M_numerationInterface
 
std::shared_ptr< Epetra_Comm > M_comm
 

Detailed Description

MonolithicBlockComposedDN - Short description of the class.

Author
Paolo Crosetto
See also
[4]

Definition at line 86 of file MonolithicBlockComposedDN.hpp.

Member Typedef Documentation

◆ super_Type

Constructor & Destructor Documentation

◆ MonolithicBlockComposedDN()

MonolithicBlockComposedDN ( const std::vector< Int > &  flag,
const std::vector< Int > &  order 
)
inline

Definition at line 91 of file MonolithicBlockComposedDN.hpp.

Member Function Documentation

◆ setDataFromGetPot()

void setDataFromGetPot ( const GetPot dataFile,
const std::string &  section 
)
virtual

sets the parameters related to M_blockPrecs from the data file

Public Methods.

Parameters
dataFileGetPot data file
sectionstring identifying the section in the data file

Implements MonolithicBlockComposed.

Definition at line 40 of file MonolithicBlockComposedDN.cpp.

◆ solveSystem()

int solveSystem ( const vector_Type rhs,
vector_Type step,
solverPtr_Type linearSolver 
)
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.

Parameters
rhsright hand side of the linear system
resultoutput result
linearSolverthe linear system

Implements MonolithicBlockComposed.

Definition at line 47 of file MonolithicBlockComposedDN.cpp.

◆ coupler()

void coupler ( mapPtr_Type map,
const std::map< ID, ID > &  locDofMap,
const vectorPtr_Type numerationInterface,
const Real timeStep,
const Real coefficient,
const Real rescaleFactor 
)
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: $ C_1= \left( \begin{array}{cc} I&0\\ 0&0 \end{array} \right)$ and $ C_2= \left( \begin{array}{cc} 0&C\\ 0&I \end{array} \right)$

Note that the FESpaces and the offsets have to be set before calling this method.

Parameters
mapthe map of the global problem
locDofMapstd::map with the correspondence between the interface dofs for the two different maps in the subproblems
numerationInterfacevector containing the correspondence of the Lagrange multipliers with the interface dofs

Implements MonolithicBlock.

Definition at line 77 of file MonolithicBlockComposedDN.cpp.

◆ push_back_precs()

void push_back_precs ( matrixPtr_Type Mat)
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

Parameters
Matinput matrix

Definition at line 101 of file MonolithicBlockComposedDN.cpp.

◆ set()

bool set ( )
inlinevirtual

returns the true if the preconditioner has at leas one factor computed

Implements MonolithicBlockComposed.

Definition at line 167 of file MonolithicBlockComposedDN.hpp.

◆ setComm()

void setComm ( std::shared_ptr< Epetra_Comm >  comm)
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.

◆ blockPrecs()

const std::vector<std::shared_ptr<Preconditioner> >& blockPrecs ( ) const
inline

Definition at line 181 of file MonolithicBlockComposedDN.hpp.

◆ createComposedDN()

static MonolithicBlock* createComposedDN ( )
inlinestatic

Definition at line 190 of file MonolithicBlockComposedDN.hpp.

◆ createComposedDN2()

static MonolithicBlock* createComposedDN2 ( )
inlinestatic

Definition at line 200 of file MonolithicBlockComposedDN.hpp.

◆ createComposedDNGI()

static MonolithicBlock* createComposedDNGI ( )
inlinestatic

Factorization in three:

  • Solid: Neumann | I | 0 | 0 | 0 | |—+—+—+—| | 0 | S | 0 | 0 | |—+—+—+—| | 0 | 0 | I | 0 | |—+—+—+—| | 0 | 0 | 0 | I |
  • ALE: Dirichlet | I | 0 | 0 | 0 | |—+-—+—+—| | 0 | I | 0 | 0 | |—+-—+—+—| | 0 | 0 | I | 0 | |—+-—+—+—| | 0 | -C | 0 | H |
  • Fluid: Dirichlet | F | 0 | C | SD | |—+----—+—+-—| | 0 | S | 0 | 0 | |—+----—+—+-—| | C | -C/dt | 0 | 0 | |—+----—+—+-—| | 0 | 0 | 0 | I |

Definition at line 209 of file MonolithicBlockComposedDN.hpp.

◆ createComposedDN2GI()

static MonolithicBlock* createComposedDN2GI ( )
inlinestatic

Factorization in three:

  • Fluid: Dirichlet | F | 0 | 0 | SD | |—+—+—+-—| | 0 | I | 0 | 0 | |—+—+—+-—| | C | 0 | I | 0 | |—+—+—+-—| | 0 | 0 | 0 | I |
  • Solid: Neumann | I | 0 | 0 | 0 | |—+----—+—+—| | 0 | S | C | 0 | |—+----—+—+—| | 0 | -C/dt | 0 | 0 | |—+----—+—+—| | 0 | 0 | 0 | I |
  • ALE: Dirichlet | I | 0 | 0 | 0 | |—+-—+—+—| | 0 | I | 0 | 0 | |—+-—+—+—| | 0 | 0 | I | 0 | |—+-—+—+—| | 0 | -C | 0 | H |

Definition at line 246 of file MonolithicBlockComposedDN.hpp.

◆ replace_precs()

void replace_precs ( matrixPtr_Type Mat,
UInt  position 
)
protectedvirtual

Protected Methods.

Replaces the preconditioner in M_blockPrecs with another one that is already constructed

Definition at line 112 of file MonolithicBlockComposedDN.cpp.

Field Documentation

◆ M_blockPrecs

std::shared_ptr<PreconditionerComposed> M_blockPrecs
protected

Pointer to an PreconditionerComposed object containing the preconditioners for each block

Definition at line 301 of file MonolithicBlockComposedDN.hpp.


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