LifeV
aSIMPLEOperator Class Reference

#include <aSIMPLEOperator.hpp>

+ Inheritance diagram for aSIMPLEOperator:
+ Collaboration diagram for aSIMPLEOperator:

Private Member Functions

void setMaps ()
 Create the domain and the range maps. More...
 
void buildShurComplement ()
 create the matrix B*diag(F)^-1*Btranspose More...
 

Private Attributes

std::shared_ptr< BlockEpetra_MapM_operatorDomainMap
 
std::shared_ptr< BlockEpetra_MapM_operatorRangeMap
 Range Map. More...
 
matrixEpetraPtr_Type M_F
 
matrixEpetraPtr_Type M_B
 
matrixEpetraPtr_Type M_Btranspose
 
matrixEpetraPtr_Type M_D
 
matrixEpetraPtr_Type M_schurComplement
 
commPtr_Type M_comm
 Communicator. More...
 
bool M_useTranspose
 
std::shared_ptr< Operators::ApproximatedInvertibleRowMatrixM_approximatedMomentumOperator
 
std::shared_ptr< Operators::ApproximatedInvertibleRowMatrixM_approximatedSchurComplementOperator
 
parameterListPtr_Type M_momentumOptions
 
parameterListPtr_Type M_schurOptions
 
mapEpetraPtr_Type M_monolithicMap
 
std::shared_ptr< Epetra_Vector > M_invD
 
matrixEpetraPtr_Type M_DBT
 
const std::string M_label
 Label. More...
 
std::shared_ptr< VectorEpetra_TypeM_Z
 Vectors needed for the apply inverse. More...
 
std::shared_ptr< VectorEpetra_TypeM_X_velocity
 
std::shared_ptr< VectorEpetra_TypeM_X_pressure
 
std::shared_ptr< VectorEpetra_TypeM_Y_velocity
 
std::shared_ptr< VectorEpetra_TypeM_Y_pressure
 
std::shared_ptr< mapEpetra_TypeM_domainDBT
 
std::shared_ptr< mapEpetra_TypeM_rangeDBT
 
bool M_useStabilization
 

Public Types

typedef Epetra_MultiVector vector_Type
 
typedef std::shared_ptr< vector_TypevectorPtr_Type
 
typedef Epetra_Map map_Type
 
typedef std::shared_ptr< map_TypemapPtr_Type
 
typedef LinearOperatorAlgebra super
 
typedef Epetra_CrsMatrix matrix_Type
 
typedef std::shared_ptr< matrix_TypematrixPtr_Type
 
typedef MatrixEpetra< RealmatrixEpetra_Type
 
typedef std::shared_ptr< matrixEpetra_TypematrixEpetraPtr_Type
 
typedef Epetra_Vector lumpedMatrix_Type
 
typedef std::shared_ptr< lumpedMatrix_TypelumpedMatrixPtr_Type
 
typedef super::comm_Type comm_Type
 
typedef super::commPtr_Type commPtr_Type
 
typedef std::shared_ptr< Teuchos::ParameterList > parameterListPtr_Type
 
typedef MapEpetra mapEpetra_Type
 
typedef std::shared_ptr< mapEpetra_TypemapEpetraPtr_Type
 
typedef VectorEpetra VectorEpetra_Type
 
typedef std::shared_ptr< VectorEpetra_TypeVectorEpetraPtr_Type
 

Constructors and Destructors

 aSIMPLEOperator ()
 Empty constructor. More...
 
virtual ~aSIMPLEOperator ()
 Destructor. More...
 

SetUp

void setUp (const matrixEpetraPtr_Type &F, const matrixEpetraPtr_Type &B, const matrixEpetraPtr_Type &Btranspose)
 SetUp - case without stabilization. More...
 
void setUp (const matrixEpetraPtr_Type &F, const matrixEpetraPtr_Type &B, const matrixEpetraPtr_Type &Btranspose, const matrixEpetraPtr_Type &D)
 SetUp - case with stabilization. More...
 

Setters

int SetUseTranspose (bool UseTranspose)
 
void setDomainMap (const std::shared_ptr< BlockEpetra_Map > &domainMap)
 set the domain map More...
 
void setRangeMap (const std::shared_ptr< BlockEpetra_Map > &rangeMap)
 set the range map More...
 
void setMomentumOptions (const parameterListPtr_Type &_oList)
 Set the momentum preconditioner options. More...
 
void setSchurOptions (const parameterListPtr_Type &_oList)
 Set the Schur Complement preconditioner options. More...
 

Methods

int Apply (const vector_Type &, vector_Type &) const
 
int ApplyInverse (VectorEpetra_Type const &X_velocity, VectorEpetra_Type const &X_pressure, VectorEpetra_Type &Y_velocity, VectorEpetra_Type &Y_pressure) const
 Returns the High Order Yosida approximation of the inverse pressure Schur Complement applied to (Xu, Xp). More...
 
int ApplyInverse (const vector_Type &X, vector_Type &Y) const
 Returns the High Order Yosida approximation of the inverse pressure Schur Complement applied to X. More...
 
double NormInf () const
 
void updateApproximatedMomentumOperator ()
 Updates the momentum preconditioner operator. More...
 
void updateApproximatedSchurComplementOperator ()
 Updates the Schur Complement preconditioner operator. More...
 
const char * Label () const
 Return a character string describing the operator. More...
 
bool UseTranspose () const
 Return the current UseTranspose setting. More...
 
bool HasNormInf () const
 Return false. More...
 
const comm_TypeComm () const
 return a reference to the Epetra_Comm communicator associated with this operator More...
 
const map_TypeOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator. More...
 
const map_TypeOperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this operator. More...
 

Getters

void showMe ()
 Show information about the class. More...
 
void setOptions (const Teuchos::ParameterList &solversOptions)
 Return the list of options being used. More...
 
matrixEpetraPtr_Type const & F () const
 Return the block(0,0) More...
 
matrixEpetraPtr_Type const & B () const
 Return the block(0,1) More...
 
matrixEpetraPtr_Type const & Btranspose () const
 Return the block(1,0) More...
 

Additional Inherited Members

- Public Types inherited from NavierStokesPreconditionerOperator
typedef MatrixEpetra< RealmatrixEpetra_Type
 
typedef std::shared_ptr< matrixEpetra_TypematrixEpetraPtr_Type
 
typedef Epetra_Comm comm_Type
 
typedef std::shared_ptr< comm_TypecommPtr_Type
 
typedef Epetra_Map map_Type
 
typedef std::shared_ptr< map_TypemapPtr_Type
 
typedef std::shared_ptr< const map_TypeconstMapPtr_Type
 
typedef Epetra_Operator operator_Type
 
typedef std::shared_ptr< operator_TypeoperatorPtr_Type
 
typedef std::shared_ptr< Teuchos::ParameterList > parameterListPtr_Type
 
- Public Types inherited from LinearOperatorAlgebra
typedef Epetra_Comm comm_Type
 
typedef std::shared_ptr< comm_TypecommPtr_Type
 
typedef Epetra_Map map_Type
 
typedef std::shared_ptr< map_TypemapPtr_Type
 
typedef std::shared_ptr< const map_TypeconstMapPtr_Type
 
typedef Epetra_Operator operator_Type
 
typedef std::shared_ptr< operator_TypeoperatorPtr_Type
 
typedef Epetra_MultiVector vector_Type
 
typedef std::shared_ptr< vector_TypevectorPtr_Type
 
- Public Member Functions inherited from NavierStokesPreconditionerOperator
 NavierStokesPreconditionerOperator ()
 
 ~NavierStokesPreconditionerOperator ()
 
virtual void updateApproximatedPressureMassOperator ()
 
virtual void setUp (const matrixEpetraPtr_Type &F, const matrixEpetraPtr_Type &B, const matrixEpetraPtr_Type &Btranspose, const matrixEpetraPtr_Type &Fp, const matrixEpetraPtr_Type &Mp, const matrixEpetraPtr_Type &Mu)
 
virtual void setPressureMassOptions (const parameterListPtr_Type &_oList)
 
- Public Member Functions inherited from LinearOperatorAlgebra
virtual ~LinearOperatorAlgebra ()
 Destructor. More...
 
int apply (const VectorEpetra &X, VectorEpetra &Y) const
 Returns the result of a LinearOperator applied to a VectorEpetra X in Y. More...
 
int applyInverse (const VectorEpetra &X, VectorEpetra &Y)
 Returns the result of a LinearOperator inverse applied to an VectorEpetra X in Y. More...
 

Detailed Description

Definition at line 62 of file aSIMPLEOperator.hpp.

Member Typedef Documentation

◆ vector_Type

Definition at line 68 of file aSIMPLEOperator.hpp.

◆ vectorPtr_Type

typedef std::shared_ptr<vector_Type> vectorPtr_Type

Definition at line 69 of file aSIMPLEOperator.hpp.

◆ map_Type

typedef Epetra_Map map_Type

Definition at line 70 of file aSIMPLEOperator.hpp.

◆ mapPtr_Type

typedef std::shared_ptr<map_Type> mapPtr_Type

Definition at line 71 of file aSIMPLEOperator.hpp.

◆ super

Definition at line 72 of file aSIMPLEOperator.hpp.

◆ matrix_Type

typedef Epetra_CrsMatrix matrix_Type

Definition at line 73 of file aSIMPLEOperator.hpp.

◆ matrixPtr_Type

typedef std::shared_ptr<matrix_Type> matrixPtr_Type

Definition at line 74 of file aSIMPLEOperator.hpp.

◆ matrixEpetra_Type

Definition at line 75 of file aSIMPLEOperator.hpp.

◆ matrixEpetraPtr_Type

typedef std::shared_ptr<matrixEpetra_Type> matrixEpetraPtr_Type

Definition at line 76 of file aSIMPLEOperator.hpp.

◆ lumpedMatrix_Type

typedef Epetra_Vector lumpedMatrix_Type

Definition at line 77 of file aSIMPLEOperator.hpp.

◆ lumpedMatrixPtr_Type

typedef std::shared_ptr<lumpedMatrix_Type> lumpedMatrixPtr_Type

Definition at line 78 of file aSIMPLEOperator.hpp.

◆ comm_Type

Definition at line 79 of file aSIMPLEOperator.hpp.

◆ commPtr_Type

Definition at line 80 of file aSIMPLEOperator.hpp.

◆ parameterListPtr_Type

typedef std::shared_ptr<Teuchos::ParameterList> parameterListPtr_Type

Definition at line 81 of file aSIMPLEOperator.hpp.

◆ mapEpetra_Type

Definition at line 82 of file aSIMPLEOperator.hpp.

◆ mapEpetraPtr_Type

typedef std::shared_ptr<mapEpetra_Type> mapEpetraPtr_Type

Definition at line 83 of file aSIMPLEOperator.hpp.

◆ VectorEpetra_Type

Definition at line 84 of file aSIMPLEOperator.hpp.

◆ VectorEpetraPtr_Type

typedef std::shared_ptr<VectorEpetra_Type> VectorEpetraPtr_Type

Definition at line 85 of file aSIMPLEOperator.hpp.

Constructor & Destructor Documentation

◆ aSIMPLEOperator()

Empty constructor.

Definition at line 18 of file aSIMPLEOperator.cpp.

◆ ~aSIMPLEOperator()

~aSIMPLEOperator ( )
virtual

Destructor.

Definition at line 28 of file aSIMPLEOperator.cpp.

Member Function Documentation

◆ setUp() [1/2]

void setUp ( const matrixEpetraPtr_Type F,
const matrixEpetraPtr_Type B,
const matrixEpetraPtr_Type Btranspose 
)
virtual

SetUp - case without stabilization.

Parameters
Fblock(0,0) of NS matrix
Bblock(1,0) of NS matrix
Btransposeblock(0,1) of NS matrix

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 40 of file aSIMPLEOperator.cpp.

◆ setUp() [2/2]

void setUp ( const matrixEpetraPtr_Type F,
const matrixEpetraPtr_Type B,
const matrixEpetraPtr_Type Btranspose,
const matrixEpetraPtr_Type D 
)
virtual

SetUp - case with stabilization.

Parameters
Fblock(0,0) of NS matrix
Bblock(1,0) of NS matrix
Btransposeblock(0,1) of NS matrix
Dblock(1,1) of NS matrix

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 61 of file aSIMPLEOperator.cpp.

◆ SetUseTranspose()

int SetUseTranspose ( bool  UseTranspose)
inlinevirtual
Warning
Transpose of this operator is not supported

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 129 of file aSIMPLEOperator.hpp.

◆ setDomainMap()

void setDomainMap ( const std::shared_ptr< BlockEpetra_Map > &  domainMap)
inlinevirtual

set the domain map

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 132 of file aSIMPLEOperator.hpp.

◆ setRangeMap()

void setRangeMap ( const std::shared_ptr< BlockEpetra_Map > &  rangeMap)
inlinevirtual

set the range map

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 135 of file aSIMPLEOperator.hpp.

◆ setMomentumOptions()

void setMomentumOptions ( const parameterListPtr_Type _oList)
virtual

Set the momentum preconditioner options.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 96 of file aSIMPLEOperator.cpp.

◆ setSchurOptions()

void setSchurOptions ( const parameterListPtr_Type _oList)
virtual

Set the Schur Complement preconditioner options.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 103 of file aSIMPLEOperator.cpp.

◆ Apply()

int Apply ( const vector_Type ,
vector_Type  
) const
inlinevirtual
Warning
No method Apply defined for this operator. It return an error code.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 150 of file aSIMPLEOperator.hpp.

◆ ApplyInverse() [1/2]

int ApplyInverse ( VectorEpetra_Type const &  X_velocity,
VectorEpetra_Type const &  X_pressure,
VectorEpetra_Type Y_velocity,
VectorEpetra_Type Y_pressure 
) const
inlinevirtual

Returns the High Order Yosida approximation of the inverse pressure Schur Complement applied to (Xu, Xp).

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 157 of file aSIMPLEOperator.cpp.

◆ ApplyInverse() [2/2]

int ApplyInverse ( const vector_Type X,
vector_Type Y 
) const
virtual

Returns the High Order Yosida approximation of the inverse pressure Schur Complement applied to X.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 173 of file aSIMPLEOperator.cpp.

◆ NormInf()

double NormInf ( ) const
inlinevirtual
Warning
Infinity norm not defined for this operator

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 162 of file aSIMPLEOperator.hpp.

◆ updateApproximatedMomentumOperator()

void updateApproximatedMomentumOperator ( )
virtual

Updates the momentum preconditioner operator.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 109 of file aSIMPLEOperator.cpp.

◆ updateApproximatedSchurComplementOperator()

void updateApproximatedSchurComplementOperator ( )
virtual

Updates the Schur Complement preconditioner operator.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 117 of file aSIMPLEOperator.cpp.

◆ Label()

const char* Label ( ) const
inlinevirtual

Return a character string describing the operator.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 175 of file aSIMPLEOperator.hpp.

◆ UseTranspose()

bool UseTranspose ( ) const
inlinevirtual

Return the current UseTranspose setting.

Warning
Not Supported Yet.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 177 of file aSIMPLEOperator.hpp.

◆ HasNormInf()

bool HasNormInf ( ) const
inlinevirtual

Return false.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 179 of file aSIMPLEOperator.hpp.

◆ Comm()

const comm_Type& Comm ( ) const
inlinevirtual

return a reference to the Epetra_Comm communicator associated with this operator

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 181 of file aSIMPLEOperator.hpp.

◆ OperatorDomainMap()

const map_Type& OperatorDomainMap ( ) const
inlinevirtual

Returns the Epetra_Map object associated with the domain of this operator.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 183 of file aSIMPLEOperator.hpp.

◆ OperatorRangeMap()

const map_Type& OperatorRangeMap ( ) const
inlinevirtual

Returns the Epetra_Map object associated with the range of this operator.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 185 of file aSIMPLEOperator.hpp.

◆ showMe()

void showMe ( )

Show information about the class.

Definition at line 34 of file aSIMPLEOperator.cpp.

◆ setOptions()

void setOptions ( const Teuchos::ParameterList &  solversOptions)
virtual

Return the list of options being used.

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 85 of file aSIMPLEOperator.cpp.

◆ F()

matrixEpetraPtr_Type const& F ( ) const
inlinevirtual

Return the block(0,0)

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 198 of file aSIMPLEOperator.hpp.

◆ B()

matrixEpetraPtr_Type const& B ( ) const
inlinevirtual

Return the block(0,1)

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 201 of file aSIMPLEOperator.hpp.

◆ Btranspose()

matrixEpetraPtr_Type const& Btranspose ( ) const
inlinevirtual

Return the block(1,0)

Reimplemented from NavierStokesPreconditionerOperator.

Definition at line 204 of file aSIMPLEOperator.hpp.

◆ setMaps()

void setMaps ( )
private

Create the domain and the range maps.

◆ buildShurComplement()

void buildShurComplement ( )
private

create the matrix B*diag(F)^-1*Btranspose

Definition at line 125 of file aSIMPLEOperator.cpp.

Field Documentation

◆ M_operatorDomainMap

std::shared_ptr<BlockEpetra_Map> M_operatorDomainMap
private

Definition at line 216 of file aSIMPLEOperator.hpp.

◆ M_operatorRangeMap

std::shared_ptr<BlockEpetra_Map> M_operatorRangeMap
private

Range Map.

Definition at line 218 of file aSIMPLEOperator.hpp.

◆ M_F

matrixEpetraPtr_Type M_F
private

Definition at line 220 of file aSIMPLEOperator.hpp.

◆ M_B

matrixEpetraPtr_Type M_B
private

Definition at line 222 of file aSIMPLEOperator.hpp.

◆ M_Btranspose

matrixEpetraPtr_Type M_Btranspose
private

Definition at line 224 of file aSIMPLEOperator.hpp.

◆ M_D

matrixEpetraPtr_Type M_D
private

Definition at line 226 of file aSIMPLEOperator.hpp.

◆ M_schurComplement

matrixEpetraPtr_Type M_schurComplement
private

Definition at line 228 of file aSIMPLEOperator.hpp.

◆ M_comm

commPtr_Type M_comm
private

Communicator.

Definition at line 231 of file aSIMPLEOperator.hpp.

◆ M_useTranspose

bool M_useTranspose
private

Definition at line 233 of file aSIMPLEOperator.hpp.

◆ M_approximatedMomentumOperator

std::shared_ptr<Operators::ApproximatedInvertibleRowMatrix> M_approximatedMomentumOperator
private

Definition at line 235 of file aSIMPLEOperator.hpp.

◆ M_approximatedSchurComplementOperator

std::shared_ptr<Operators::ApproximatedInvertibleRowMatrix> M_approximatedSchurComplementOperator
private

Definition at line 237 of file aSIMPLEOperator.hpp.

◆ M_momentumOptions

parameterListPtr_Type M_momentumOptions
private

Definition at line 239 of file aSIMPLEOperator.hpp.

◆ M_schurOptions

parameterListPtr_Type M_schurOptions
private

Definition at line 241 of file aSIMPLEOperator.hpp.

◆ M_monolithicMap

mapEpetraPtr_Type M_monolithicMap
private

Definition at line 243 of file aSIMPLEOperator.hpp.

◆ M_invD

std::shared_ptr<Epetra_Vector> M_invD
private

Definition at line 245 of file aSIMPLEOperator.hpp.

◆ M_DBT

matrixEpetraPtr_Type M_DBT
private

Definition at line 247 of file aSIMPLEOperator.hpp.

◆ M_label

const std::string M_label
private

Label.

Definition at line 250 of file aSIMPLEOperator.hpp.

◆ M_Z

std::shared_ptr<VectorEpetra_Type> M_Z
private

Vectors needed for the apply inverse.

Definition at line 253 of file aSIMPLEOperator.hpp.

◆ M_X_velocity

std::shared_ptr<VectorEpetra_Type> M_X_velocity
private

Definition at line 255 of file aSIMPLEOperator.hpp.

◆ M_X_pressure

std::shared_ptr<VectorEpetra_Type> M_X_pressure
private

Definition at line 256 of file aSIMPLEOperator.hpp.

◆ M_Y_velocity

std::shared_ptr<VectorEpetra_Type> M_Y_velocity
private

Definition at line 257 of file aSIMPLEOperator.hpp.

◆ M_Y_pressure

std::shared_ptr<VectorEpetra_Type> M_Y_pressure
private

Definition at line 258 of file aSIMPLEOperator.hpp.

◆ M_domainDBT

std::shared_ptr<mapEpetra_Type> M_domainDBT
private

Definition at line 260 of file aSIMPLEOperator.hpp.

◆ M_rangeDBT

std::shared_ptr<mapEpetra_Type> M_rangeDBT
private

Definition at line 261 of file aSIMPLEOperator.hpp.

◆ M_useStabilization

bool M_useStabilization
private

Definition at line 263 of file aSIMPLEOperator.hpp.


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