Stokhos
Development
|
Nonlinear, stochastic Galerkin ModelEvaluator. More...
#include <Stokhos_SGModelEvaluator.hpp>
Public Member Functions | |
SGModelEvaluator (const Teuchos::RCP< EpetraExt::ModelEvaluator > &me, const Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > &sg_basis, const Teuchos::RCP< const Stokhos::Quadrature< int, double > > &sg_quad, const Teuchos::RCP< Stokhos::OrthogPolyExpansion< int, double > > &sg_exp, const Teuchos::RCP< const Stokhos::ParallelData > &sg_parallel_data, const Teuchos::RCP< Teuchos::ParameterList > ¶ms, bool scaleOP=true) | |
Teuchos::RCP < EpetraExt::BlockVector > | import_solution (const Epetra_Vector &x) const |
Import parallel solution vector. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | import_solution_poly (const Epetra_Vector &x) const |
Import parallel solution vector. | |
Teuchos::RCP < EpetraExt::BlockVector > | export_solution (const Epetra_Vector &x_overlapped) const |
Export parallel solution vector. | |
Teuchos::RCP < EpetraExt::BlockVector > | import_residual (const Epetra_Vector &f) const |
Import parallel residual vector. | |
Teuchos::RCP < EpetraExt::BlockVector > | export_residual (const Epetra_Vector &f_overlapped) const |
Export parallel residual vector. | |
Overridden from EpetraExt::ModelEvaluator . | |
Teuchos::RCP< const Epetra_Map > | get_x_map () const |
Return solution vector map. | |
Teuchos::RCP< const Epetra_Map > | get_f_map () const |
Return residual vector map. | |
Teuchos::RCP< const Epetra_Map > | get_p_map (int l) const |
Return parameter vector map. | |
Teuchos::RCP< const Epetra_Map > | get_g_map (int l) const |
Return response map. | |
Teuchos::RCP< const Teuchos::Array< std::string > > | get_p_names (int l) const |
Return array of parameter names. | |
Teuchos::RCP< const Epetra_Vector > | get_x_init () const |
Return initial solution. | |
Teuchos::RCP< const Epetra_Vector > | get_p_init (int l) const |
Return initial parameters. | |
Teuchos::RCP< Epetra_Operator > | create_W () const |
Create W = alpha*M + beta*J matrix. | |
Teuchos::RCP < EpetraExt::ModelEvaluator::Preconditioner > | create_WPrec () const |
Create preconditioner operator. | |
Teuchos::RCP< Epetra_Operator > | create_DgDx_dot_op (int j) const |
Create SG operator representing dg/dxdot. | |
Teuchos::RCP< Epetra_Operator > | create_DgDx_op (int j) const |
Create SG operator representing dg/dx. | |
Teuchos::RCP< Epetra_Operator > | create_DgDp_op (int j, int i) const |
Create SG operator representing dg/dp. | |
Teuchos::RCP< Epetra_Operator > | create_DfDp_op (int i) const |
Create SG operator representing df/dp. | |
InArgs | createInArgs () const |
Create InArgs. | |
OutArgs | createOutArgs () const |
Create OutArgs. | |
void | evalModel (const InArgs &inArgs, const OutArgs &outArgs) const |
Evaluate model on InArgs. | |
Overridden from Stokhos::SGModelEvaluatorBase . | |
void | set_x_sg_init (const Stokhos::EpetraVectorOrthogPoly &x_sg_in) |
Set initial solution polynomial. | |
Teuchos::RCP< const Stokhos::EpetraVectorOrthogPoly > | get_x_sg_init () const |
Return initial SG x. | |
void | set_p_sg_init (int i, const Stokhos::EpetraVectorOrthogPoly &p_sg_in) |
Set initial parameter polynomial. | |
Teuchos::RCP< const Stokhos::EpetraVectorOrthogPoly > | get_p_sg_init (int l) const |
Return initial SG parameters. | |
Teuchos::Array< int > | get_p_sg_map_indices () const |
Get indices of SG parameters. More... | |
Teuchos::Array< int > | get_g_sg_map_indices () const |
Get indices of SG responses. More... | |
Teuchos::Array< Teuchos::RCP < const Epetra_Map > > | get_g_sg_base_maps () const |
Get base maps of SG responses. | |
Teuchos::RCP< const Epetra_BlockMap > | get_overlap_stochastic_map () const |
Return overlap stochastic map. | |
Teuchos::RCP< const Epetra_BlockMap > | get_x_sg_overlap_map () const |
Return x sg overlap map. | |
Teuchos::RCP< const Epetra_Import > | get_x_sg_importer () const |
Return x sg importer. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_x_sg (Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using x map and owned sg map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_x_sg_overlap (Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using x map and overlap sg map. | |
Teuchos::RCP < Stokhos::EpetraMultiVectorOrthogPoly > | create_x_mv_sg (int num_vecs, Epetra_DataAccess CV=Copy, const Epetra_MultiVector *v=NULL) const |
Create vector orthog poly using x map and owned sg map. | |
Teuchos::RCP < Stokhos::EpetraMultiVectorOrthogPoly > | create_x_mv_sg_overlap (int num_vecs, Epetra_DataAccess CV=Copy, const Epetra_MultiVector *v=NULL) const |
Create vector orthog poly using x map and overlap sg map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_p_sg (int l, Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using p map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_f_sg (Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using f map and owned sg map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_f_sg_overlap (Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using f map and overlap sg map. | |
Teuchos::RCP < Stokhos::EpetraMultiVectorOrthogPoly > | create_f_mv_sg (int num_vecs, Epetra_DataAccess CV=Copy, const Epetra_MultiVector *v=NULL) const |
Create multi-vector orthog poly using f map and owned sg map. | |
Teuchos::RCP < Stokhos::EpetraMultiVectorOrthogPoly > | create_f_mv_sg_overlap (int num_vecs, Epetra_DataAccess CV=Copy, const Epetra_MultiVector *v=NULL) const |
Create multi-vector orthog poly using f map and overlap sg map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | create_g_sg (int l, Epetra_DataAccess CV=Copy, const Epetra_Vector *v=NULL) const |
Create vector orthog poly using g map. | |
Teuchos::RCP < Stokhos::EpetraMultiVectorOrthogPoly > | create_g_mv_sg (int l, int num_vecs, Epetra_DataAccess CV=Copy, const Epetra_MultiVector *v=NULL) const |
Create multi-vector orthog poly using g map. | |
Public Member Functions inherited from Stokhos::SGModelEvaluatorBase | |
virtual | ~SGModelEvaluatorBase () |
Destructor. | |
Protected Attributes | |
Teuchos::RCP < EpetraExt::ModelEvaluator > | me |
Underlying model evaluator. | |
Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > | sg_basis |
Stochastic Galerkin basis. | |
Teuchos::RCP< const Stokhos::Quadrature< int, double > > | sg_quad |
Stochastic Galerkin quadrature. | |
Teuchos::RCP < Stokhos::OrthogPolyExpansion < int, double > > | sg_exp |
Stochastic Galerkin expansion. | |
Teuchos::RCP < Teuchos::ParameterList > | params |
Algorithmic parameters. | |
unsigned int | num_sg_blocks |
Number of stochastic blocks. | |
unsigned int | num_W_blocks |
Number of W stochastic blocks (may be smaller than num_sg_blocks) | |
unsigned int | num_p_blocks |
Number of p stochastic blocks (may be smaller than num_sg_blocks) | |
bool | supports_x |
Whether we support x (and thus f and W) | |
Teuchos::RCP< const Epetra_Map > | x_map |
Underlying unknown map. | |
Teuchos::RCP< const Epetra_Map > | f_map |
Underlying residual map. | |
Teuchos::RCP< const Stokhos::ParallelData > | sg_parallel_data |
Parallel SG data. | |
Teuchos::RCP< const EpetraExt::MultiComm > | sg_comm |
Parallel SG communicator. | |
Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > | epetraCijk |
Epetra Cijk. | |
Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > | serialCijk |
Serial Epetra Cijk for dgdx*. | |
Teuchos::RCP< const Epetra_BlockMap > | stoch_row_map |
Map for stochastic blocks. | |
Teuchos::RCP< const Epetra_BlockMap > | overlapped_stoch_row_map |
Overlapped map for stochastic blocks (local map) | |
Teuchos::RCP< const Epetra_BlockMap > | overlapped_stoch_p_map |
Overlapped map for p stochastic blocks (local map) | |
Teuchos::RCP< const Epetra_Map > | sg_x_map |
Block SG unknown map. | |
Teuchos::RCP< const Epetra_Map > | sg_overlapped_x_map |
Block SG overlapped unknown map. | |
Teuchos::RCP< const Epetra_Map > | sg_f_map |
Block SG residual map. | |
Teuchos::RCP< const Epetra_Map > | sg_overlapped_f_map |
Block SG overlapped residual map. | |
Teuchos::RCP< Epetra_Import > | sg_overlapped_x_importer |
Importer from SG to SG-overlapped maps. | |
Teuchos::RCP< Epetra_Export > | sg_overlapped_f_exporter |
Exporter from SG-overlapped to SG maps. | |
int | num_p |
Number of parameter vectors of underlying model evaluator. | |
int | num_p_sg |
Number of stochastic parameter vectors. | |
Teuchos::Array< int > | sg_p_index_map |
Index map between block-p and p_sg maps. | |
Teuchos::Array< Teuchos::RCP < const Epetra_Map > > | sg_p_map |
Block SG parameter map. | |
Teuchos::Array< Teuchos::RCP < Teuchos::Array< std::string > > > | sg_p_names |
SG coefficient parameter names. | |
int | num_g |
Number of response vectors of underlying model evaluator. | |
int | num_g_sg |
Number of stochastic response vectors. | |
Teuchos::Array< int > | sg_g_index_map |
Index map between block-g and g_sg maps. | |
Teuchos::Array< Teuchos::RCP < const Epetra_Map > > | sg_g_map |
Block SG response map. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | x_dot_sg_blocks |
x_dot stochastic Galerkin components | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | x_sg_blocks |
x stochastic Galerkin components | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | f_sg_blocks |
f stochastic Galerkin components | |
Teuchos::RCP < Stokhos::EpetraOperatorOrthogPoly > | W_sg_blocks |
W stochastic Galerkin components. | |
Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > | sg_x_init |
SG initial x. | |
Teuchos::Array< Teuchos::RCP < Stokhos::EpetraVectorOrthogPoly > > | sg_p_init |
SG initial p. | |
bool | eval_W_with_f |
Whether to always evaluate W with f. | |
Teuchos::RCP< Stokhos::SGOperator > | my_W |
W pointer for evaluating W with f. | |
Teuchos::RCP< Epetra_Vector > | my_x |
x pointer for evaluating preconditioner | |
bool | scaleOP |
Teuchos::RCP < Stokhos::SGPreconditionerFactory > | sg_prec_factory |
Preconditioner factory. | |
Nonlinear, stochastic Galerkin ModelEvaluator.
SGModelEvaluator is an implementation of EpetraExt::ModelEvaluator that generates a nonlinear problem from a stochastic Galerkin expansion. It wraps a supplied ModelEvaluator that supports the SG versions of p, x, and possibly x_dot InArgs, and f and W OutArgs, and translates those into a new nonlinear problem. It does so by concatenating all of the SG components of p, x, x_dot, and f into extended block vectors that form the parameters, solution vector, time derivative vector and residual for the new nonlinear problem. For dealing with the W matrix two methods are supported: forming a fully-assembled SG matrix and a "matrix free" method. The choice is selected by setting the "Jacobian Method" parameter of the parameter list supplied to the constructor, which can be either "Fully Assembled" or "Matrix Free". In the first case, the W operator of the underlying model evaluator must be an Epetra_CrsMatrix. In the second case, a preconditioner for the mean block must also be supplied via the "Preconditioner Factory" parameter of this list. This preconditioner factory must implement the Stokhos::PreconditionerFactory interface also supplied in this file. Currently using a preconditioner for the mean is the only option available for preconditioning the SG system when using the matrix-free method.
|
virtual |
Get indices of SG responses.
These indices determine which response vectors support SG
Implements Stokhos::SGModelEvaluatorBase.
|
virtual |
Get indices of SG parameters.
These indices determine which parameter vectors support SG
Implements Stokhos::SGModelEvaluatorBase.