44 #ifndef STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP 45 #define STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP 49 #ifdef HAVE_STOKHOS_NOX 51 #include "NOX_Config.h" 53 #ifdef HAVE_NOX_EPETRAEXT 55 #include "Teuchos_RCP.hpp" 58 #include "EpetraExt_MultiComm.h" 61 #include "Epetra_Map.h" 62 #include "Epetra_Export.h" 63 #include "NOX_Epetra_LinearSystem.H" 64 #include "Teuchos_ParameterList.hpp" 65 #include "EpetraExt_BlockMultiVector.h" 78 GaussSeidelPreconditioner(
79 const Teuchos::RCP<const EpetraExt::MultiComm>& sg_comm,
81 const Teuchos::RCP<const Stokhos::EpetraSparse3Tensor>& epetraCijk,
82 const Teuchos::RCP<const Epetra_Map>& base_map,
83 const Teuchos::RCP<const Epetra_Map>& sg_map,
84 const Teuchos::RCP<NOX::Epetra::LinearSystem>& det_solver,
85 const Teuchos::RCP<Teuchos::ParameterList>& params);
88 virtual ~GaussSeidelPreconditioner();
95 setupPreconditioner(
const Teuchos::RCP<Stokhos::SGOperator>& sg_op,
96 const Epetra_Vector&
x);
104 virtual int SetUseTranspose(
bool UseTranspose);
110 virtual int Apply(
const Epetra_MultiVector& Input,
111 Epetra_MultiVector& Result)
const;
117 virtual int ApplyInverse(
const Epetra_MultiVector& X,
118 Epetra_MultiVector& Y)
const;
121 virtual double NormInf()
const;
124 virtual const char* Label ()
const;
127 virtual bool UseTranspose()
const;
133 virtual bool HasNormInf()
const;
139 virtual const Epetra_Comm & Comm()
const;
145 virtual const Epetra_Map& OperatorDomainMap ()
const;
151 virtual const Epetra_Map& OperatorRangeMap ()
const;
158 GaussSeidelPreconditioner(
const GaussSeidelPreconditioner&);
161 GaussSeidelPreconditioner& operator=(
const GaussSeidelPreconditioner&);
169 Teuchos::RCP<const EpetraExt::MultiComm> sg_comm;
172 Teuchos::RCP<const Stokhos::OrthogPolyBasis<int,double> > sg_basis;
175 Teuchos::RCP<const Stokhos::EpetraSparse3Tensor> epetraCijk;
178 Teuchos::RCP<const Epetra_Map> base_map;
181 Teuchos::RCP<const Epetra_Map> sg_map;
184 bool is_stoch_parallel;
187 Teuchos::RCP<const Epetra_BlockMap> stoch_row_map;
190 Teuchos::RCP<NOX::Epetra::LinearSystem> det_solver;
193 Teuchos::RCP<Teuchos::ParameterList> params;
199 Teuchos::RCP<Stokhos::SGOperator> sg_op;
202 Teuchos::RCP<Stokhos::EpetraOperatorOrthogPoly > sg_poly;
208 Teuchos::RCP<const Cijk_type > Cijk;
211 mutable Teuchos::RCP<EpetraExt::BlockMultiVector> sg_df_block;
214 mutable Teuchos::RCP<EpetraExt::BlockMultiVector> sg_y_block;
217 mutable Teuchos::RCP<Epetra_MultiVector> kx;
223 Teuchos::RCP<const Epetra_BlockMap> sg_col_map;
226 Teuchos::RCP<Epetra_Export> col_exporter;
229 mutable Teuchos::RCP<EpetraExt::BlockMultiVector> sg_df_col;
232 mutable Teuchos::RCP<EpetraExt::BlockMultiVector> sg_df_tmp;
243 #endif // STOKHOS_GAUSS_SEIDEL_PRECONDITIONER_HPP
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType * x
Top-level namespace for Stokhos classes and functions.
Stokhos::Sparse3Tensor< int, double > Cijk_type
An abstract class to represent a generic stochastic Galerkin preconditioner as an Epetra_Operator...