Stokhos Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Stokhos::ApproxSchurComplementPreconditioner Class Reference

A stochastic preconditioner based on applying the approximate Schur complement preconditioner as defined by Sousedik, Ghanem, and Phipps, Numerical Linear Algebra and Applications, 2012. More...

#include <Stokhos_ApproxSchurComplementPreconditioner.hpp>

Inheritance diagram for Stokhos::ApproxSchurComplementPreconditioner:
Inheritance graph
[legend]

Public Member Functions

 ApproxSchurComplementPreconditioner (const Teuchos::RCP< const EpetraExt::MultiComm > &sg_comm, const Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > &sg_basis, const Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > &epetraCijk, const Teuchos::RCP< const Epetra_Map > &base_map, const Teuchos::RCP< const Epetra_Map > &sg_map, const Teuchos::RCP< Stokhos::AbstractPreconditionerFactory > &prec_factory, const Teuchos::RCP< Teuchos::ParameterList > &params)
 Constructor.
 
virtual ~ApproxSchurComplementPreconditioner ()
 Destructor.
 
- Public Member Functions inherited from Stokhos::SGPreconditioner
 SGPreconditioner ()
 Constructor.
 
virtual ~SGPreconditioner ()
 Destructor.
 
virtual void setupPreconditioner (const Teuchos::RCP< Stokhos::SGOperator > &sg_op, const Epetra_Vector &x)=0
 Setup preconditioner.
 
- Public Member Functions inherited from Epetra_Operator
virtual ~Epetra_Operator ()
 
virtual int SetUseTranspose (bool UseTranspose)=0
 
virtual int Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0
 
virtual int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0
 
virtual double NormInf () const=0
 
virtual const char * Label () const=0
 
virtual bool UseTranspose () const=0
 
virtual bool HasNormInf () const=0
 
virtual const Epetra_CommComm () const=0
 
virtual const Epetra_MapOperatorDomainMap () const=0
 
virtual const Epetra_MapOperatorRangeMap () const=0
 

Epetra_Operator methods

typedef Stokhos::Sparse3Tensor< int, doubleCijk_type
 Short-hand for Cijk.
 
std::string label
 Label for operator.
 
Teuchos::RCP< const EpetraExt::MultiComm > sg_comm
 Stores SG parallel communicator.
 
Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > sg_basis
 Stochastic Galerking basis.
 
Teuchos::RCP< const Stokhos::EpetraSparse3TensorepetraCijk
 Stores Epetra Cijk tensor.
 
Teuchos::RCP< const Epetra_Mapbase_map
 Stores base map.
 
Teuchos::RCP< const Epetra_Mapsg_map
 Stores SG map.
 
Teuchos::RCP< Stokhos::AbstractPreconditionerFactoryprec_factory
 Stores factory for building mean preconditioner.
 
Teuchos::RCP< Epetra_Operatormean_prec
 Stores mean preconditioner.
 
bool useTranspose
 Flag indicating whether transpose was selected.
 
Teuchos::RCP< Stokhos::SGOperatorsg_op
 Pointer to the SG operator.
 
Teuchos::RCP< Stokhos::EpetraOperatorOrthogPolysg_poly
 Pointer to the PCE expansion of Jacobian.
 
Teuchos::RCP< const Cijk_typeCijk
 Pointer to triple product.
 
int P
 Total polynomial order.
 
Teuchos::Array< int > block_indices
 Starting block indices.
 
Teuchos::Array< Teuchos::RCP< Cijk_type > > upper_block_Cijk
 Triple product tensor for each sub-block.
 
Teuchos::Array< Teuchos::RCP< Cijk_type > > lower_block_Cijk
 
bool scale_op
 Flag indicating whether operator be scaled with <\psi_i^2>
 
bool symmetric
 Use symmetric Gauss-Seidel.
 
bool only_use_linear
 Limit Gauss-Seidel loop to linear terms.
 
int max_num_mat_vec
 Maximum number of matvecs in Apply.
 
Teuchos::RCP< Epetra_MultiVectortmp
 Temporary vector for storing matrix-vector products.
 
Teuchos::RCP< EpetraExt::BlockMultiVector > rhs_block
 Temporary vector for storing rhs in Gauss-Seidel loop.
 
Teuchos::Array< double * > j_ptr
 
Teuchos::Array< int > mj_indices
 
virtual int SetUseTranspose (bool UseTranspose)
 Set to true if the transpose of the operator is requested.
 
virtual int Apply (const Epetra_MultiVector &Input, Epetra_MultiVector &Result) const
 Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result as described above.
 
virtual int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Returns the result of the inverse of the operator applied to a Epetra_MultiVector Input in Result as described above.
 
virtual double NormInf () const
 Returns an approximate infinity norm of the operator matrix.
 
virtual const char * Label () const
 Returns a character string describing the operator.
 
virtual bool UseTranspose () const
 Returns the current UseTranspose setting.
 
virtual bool HasNormInf () const
 Returns true if the this object can provide an approximate Inf-norm, false otherwise.
 
virtual const Epetra_CommComm () const
 Returns a reference to the Epetra_Comm communicator associated with this operator.
 
virtual const Epetra_MapOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this matrix operator.
 
virtual const Epetra_MapOperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this matrix operator.
 
void multiply_block (const Teuchos::RCP< const Stokhos::Sparse3Tensor< int, double > > &cijk, double alpha, const EpetraExt::BlockMultiVector &Input, EpetraExt::BlockMultiVector &Result) const
 
void divide_diagonal_block (int row_begin, int row_end, const EpetraExt::BlockMultiVector &Input, EpetraExt::BlockMultiVector &Result) const
 
 ApproxSchurComplementPreconditioner (const ApproxSchurComplementPreconditioner &)
 Private to prohibit copying.
 
ApproxSchurComplementPreconditioneroperator= (const ApproxSchurComplementPreconditioner &)
 Private to prohibit copying.
 

Stokhos::SGPreconditioner methods

virtual void setupPreconditioner (const Teuchos::RCP< Stokhos::SGOperator > &sg_op, const Epetra_Vector &x)
 Setup preconditioner.
 

Detailed Description

A stochastic preconditioner based on applying the approximate Schur complement preconditioner as defined by Sousedik, Ghanem, and Phipps, Numerical Linear Algebra and Applications, 2012.

Definition at line 63 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

Member Typedef Documentation

◆ Cijk_type

Short-hand for Cijk.

Definition at line 202 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

Constructor & Destructor Documentation

◆ ApproxSchurComplementPreconditioner() [1/2]

Stokhos::ApproxSchurComplementPreconditioner::ApproxSchurComplementPreconditioner ( const Teuchos::RCP< const EpetraExt::MultiComm > &  sg_comm,
const Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > &  sg_basis,
const Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > &  epetraCijk,
const Teuchos::RCP< const Epetra_Map > &  base_map,
const Teuchos::RCP< const Epetra_Map > &  sg_map,
const Teuchos::RCP< Stokhos::AbstractPreconditionerFactory > &  prec_factory,
const Teuchos::RCP< Teuchos::ParameterList > &  params 
)

Constructor.

Definition at line 48 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ ~ApproxSchurComplementPreconditioner()

Stokhos::ApproxSchurComplementPreconditioner::~ApproxSchurComplementPreconditioner ( )
virtual

Destructor.

Definition at line 154 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ ApproxSchurComplementPreconditioner() [2/2]

Stokhos::ApproxSchurComplementPreconditioner::ApproxSchurComplementPreconditioner ( const ApproxSchurComplementPreconditioner )
private

Private to prohibit copying.

Member Function Documentation

◆ setupPreconditioner()

void Stokhos::ApproxSchurComplementPreconditioner::setupPreconditioner ( const Teuchos::RCP< Stokhos::SGOperator > &  sg_op,
const Epetra_Vector x 
)
virtual

Setup preconditioner.

Implements Stokhos::SGPreconditioner.

Definition at line 160 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ SetUseTranspose()

int Stokhos::ApproxSchurComplementPreconditioner::SetUseTranspose ( bool  UseTranspose)
virtual

Set to true if the transpose of the operator is requested.

Implements Epetra_Operator.

Definition at line 172 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ Apply()

int Stokhos::ApproxSchurComplementPreconditioner::Apply ( const Epetra_MultiVector Input,
Epetra_MultiVector Result 
) const
virtual

Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result as described above.

Implements Epetra_Operator.

Definition at line 183 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ ApplyInverse()

int Stokhos::ApproxSchurComplementPreconditioner::ApplyInverse ( const Epetra_MultiVector X,
Epetra_MultiVector Y 
) const
virtual

Returns the result of the inverse of the operator applied to a Epetra_MultiVector Input in Result as described above.

Implements Epetra_Operator.

Definition at line 190 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ NormInf()

double Stokhos::ApproxSchurComplementPreconditioner::NormInf ( ) const
virtual

Returns an approximate infinity norm of the operator matrix.

Implements Epetra_Operator.

Definition at line 258 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ Label()

const char * Stokhos::ApproxSchurComplementPreconditioner::Label ( ) const
virtual

Returns a character string describing the operator.

Implements Epetra_Operator.

Definition at line 266 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ UseTranspose()

bool Stokhos::ApproxSchurComplementPreconditioner::UseTranspose ( ) const
virtual

Returns the current UseTranspose setting.

Implements Epetra_Operator.

Definition at line 273 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ HasNormInf()

bool Stokhos::ApproxSchurComplementPreconditioner::HasNormInf ( ) const
virtual

Returns true if the this object can provide an approximate Inf-norm, false otherwise.

Implements Epetra_Operator.

Definition at line 280 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ Comm()

const Epetra_Comm & Stokhos::ApproxSchurComplementPreconditioner::Comm ( ) const
virtual

Returns a reference to the Epetra_Comm communicator associated with this operator.

Implements Epetra_Operator.

Definition at line 287 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ OperatorDomainMap()

const Epetra_Map & Stokhos::ApproxSchurComplementPreconditioner::OperatorDomainMap ( ) const
virtual

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

Implements Epetra_Operator.

Definition at line 293 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ OperatorRangeMap()

const Epetra_Map & Stokhos::ApproxSchurComplementPreconditioner::OperatorRangeMap ( ) const
virtual

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

Implements Epetra_Operator.

Definition at line 300 of file Stokhos_ApproxSchurComplementPreconditioner.cpp.

◆ multiply_block()

void Stokhos::ApproxSchurComplementPreconditioner::multiply_block ( const Teuchos::RCP< const Stokhos::Sparse3Tensor< int, double > > &  cijk,
double  alpha,
const EpetraExt::BlockMultiVector &  Input,
EpetraExt::BlockMultiVector &  Result 
) const
protected

◆ divide_diagonal_block()

void Stokhos::ApproxSchurComplementPreconditioner::divide_diagonal_block ( int  row_begin,
int  row_end,
const EpetraExt::BlockMultiVector &  Input,
EpetraExt::BlockMultiVector &  Result 
) const
protected

◆ operator=()

ApproxSchurComplementPreconditioner & Stokhos::ApproxSchurComplementPreconditioner::operator= ( const ApproxSchurComplementPreconditioner )
private

Private to prohibit copying.

Member Data Documentation

◆ label

std::string Stokhos::ApproxSchurComplementPreconditioner::label
protected

Label for operator.

Definition at line 169 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ sg_comm

Teuchos::RCP<const EpetraExt::MultiComm> Stokhos::ApproxSchurComplementPreconditioner::sg_comm
protected

Stores SG parallel communicator.

Definition at line 172 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ sg_basis

Teuchos::RCP<const Stokhos::OrthogPolyBasis<int,double> > Stokhos::ApproxSchurComplementPreconditioner::sg_basis
protected

Stochastic Galerking basis.

Definition at line 175 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ epetraCijk

Teuchos::RCP<const Stokhos::EpetraSparse3Tensor> Stokhos::ApproxSchurComplementPreconditioner::epetraCijk
protected

Stores Epetra Cijk tensor.

Definition at line 178 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ base_map

Teuchos::RCP<const Epetra_Map> Stokhos::ApproxSchurComplementPreconditioner::base_map
protected

Stores base map.

Definition at line 181 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ sg_map

Teuchos::RCP<const Epetra_Map> Stokhos::ApproxSchurComplementPreconditioner::sg_map
protected

Stores SG map.

Definition at line 184 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ prec_factory

Teuchos::RCP<Stokhos::AbstractPreconditionerFactory> Stokhos::ApproxSchurComplementPreconditioner::prec_factory
protected

Stores factory for building mean preconditioner.

Definition at line 187 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ mean_prec

Teuchos::RCP<Epetra_Operator> Stokhos::ApproxSchurComplementPreconditioner::mean_prec
protected

Stores mean preconditioner.

Definition at line 190 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ useTranspose

bool Stokhos::ApproxSchurComplementPreconditioner::useTranspose
protected

Flag indicating whether transpose was selected.

Definition at line 193 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ sg_op

Teuchos::RCP<Stokhos::SGOperator> Stokhos::ApproxSchurComplementPreconditioner::sg_op
protected

Pointer to the SG operator.

Definition at line 196 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ sg_poly

Teuchos::RCP<Stokhos::EpetraOperatorOrthogPoly > Stokhos::ApproxSchurComplementPreconditioner::sg_poly
protected

Pointer to the PCE expansion of Jacobian.

Definition at line 199 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ Cijk

Teuchos::RCP<const Cijk_type > Stokhos::ApproxSchurComplementPreconditioner::Cijk
protected

Pointer to triple product.

Definition at line 205 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ P

int Stokhos::ApproxSchurComplementPreconditioner::P
protected

Total polynomial order.

Definition at line 208 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ block_indices

Teuchos::Array<int> Stokhos::ApproxSchurComplementPreconditioner::block_indices
protected

Starting block indices.

Definition at line 211 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ upper_block_Cijk

Teuchos::Array< Teuchos::RCP<Cijk_type> > Stokhos::ApproxSchurComplementPreconditioner::upper_block_Cijk
protected

Triple product tensor for each sub-block.

Definition at line 214 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ lower_block_Cijk

Teuchos::Array< Teuchos::RCP<Cijk_type> > Stokhos::ApproxSchurComplementPreconditioner::lower_block_Cijk
protected

◆ scale_op

bool Stokhos::ApproxSchurComplementPreconditioner::scale_op
protected

Flag indicating whether operator be scaled with <\psi_i^2>

Definition at line 218 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ symmetric

bool Stokhos::ApproxSchurComplementPreconditioner::symmetric
protected

Use symmetric Gauss-Seidel.

Definition at line 221 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ only_use_linear

bool Stokhos::ApproxSchurComplementPreconditioner::only_use_linear
protected

Limit Gauss-Seidel loop to linear terms.

Definition at line 224 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ max_num_mat_vec

int Stokhos::ApproxSchurComplementPreconditioner::max_num_mat_vec
protected

Maximum number of matvecs in Apply.

Definition at line 227 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ tmp

Teuchos::RCP<Epetra_MultiVector> Stokhos::ApproxSchurComplementPreconditioner::tmp
mutableprotected

Temporary vector for storing matrix-vector products.

Definition at line 230 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ rhs_block

Teuchos::RCP<EpetraExt::BlockMultiVector> Stokhos::ApproxSchurComplementPreconditioner::rhs_block
mutableprotected

Temporary vector for storing rhs in Gauss-Seidel loop.

Definition at line 233 of file Stokhos_ApproxSchurComplementPreconditioner.hpp.

◆ j_ptr

Teuchos::Array<double*> Stokhos::ApproxSchurComplementPreconditioner::j_ptr
mutableprotected

◆ mj_indices

Teuchos::Array<int> Stokhos::ApproxSchurComplementPreconditioner::mj_indices
mutableprotected

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