42#ifndef STOKHOS_SGMODELEVALUATOR_ADAPTIVE_HPP
43#define STOKHOS_SGMODELEVALUATOR_ADAPTIVE_HPP
47#include "EpetraExt_ModelEvaluator.h"
48#include "EpetraExt_MultiComm.h"
49#include "EpetraExt_BlockVector.h"
52#include "Teuchos_RCP.hpp"
53#include "Teuchos_Array.hpp"
54#include "Teuchos_ParameterList.hpp"
87 const Teuchos::RCP<EpetraExt::ModelEvaluator>& me_,
88 const Teuchos::RCP<Stokhos::AdaptivityManager> & am,
91 const Teuchos::RCP<const Stokhos::ParallelData>& sg_parallel_data_,
92 bool onlyUseLinear_,
int kExpOrder_,
93 const Teuchos::RCP<Teuchos::ParameterList>& params_);
97 const Teuchos::RCP<EpetraExt::ModelEvaluator>&
me,
104 const Teuchos::RCP<Teuchos::ParameterList>&
params,
114 Teuchos::RCP<const Epetra_Map>
get_x_map()
const;
117 Teuchos::RCP<const Epetra_Map>
get_p_map(
int l)
const;
120 Teuchos::RCP<const Teuchos::Array<std::string> >
124 Teuchos::RCP<const Epetra_Vector>
get_x_init()
const;
127 Teuchos::RCP<const Epetra_Vector>
get_p_init(
int l)
const;
133 Teuchos::RCP<const Epetra_Map>
get_f_map()
const;
136 Teuchos::RCP<const Epetra_Map>
get_g_map(
int l)
const;
139 Teuchos::RCP<Epetra_Operator>
create_W()
const;
151 void evalModel(
const InArgs& inArgs,
const OutArgs& outArgs)
const;
162 Teuchos::RCP<const Stokhos::EpetraVectorOrthogPoly>
get_x_sg_init()
const;
168 Teuchos::RCP<const Stokhos::EpetraVectorOrthogPoly>
get_p_sg_init(
int l)
const;
195 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
200 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
205 Teuchos::RCP<Stokhos::EpetraMultiVectorOrthogPoly>
211 Teuchos::RCP<Stokhos::EpetraMultiVectorOrthogPoly>
217 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
222 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
227 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
232 Teuchos::RCP<Stokhos::EpetraMultiVectorOrthogPoly>
237 Teuchos::RCP<Stokhos::EpetraMultiVectorOrthogPoly>
242 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
247 Teuchos::RCP<Stokhos::EpetraMultiVectorOrthogPoly>
259 Teuchos::RCP<EpetraExt::ModelEvaluator>
me;
262 Teuchos::RCP<const Stokhos::OrthogPolyBasis<int, double> >
sg_basis;
267 Teuchos::RCP<const Stokhos::Quadrature<int,double> >
sg_quad;
270 Teuchos::RCP<Stokhos::OrthogPolyExpansion<int,double> >
sg_exp;
273 Teuchos::RCP<Teuchos::ParameterList>
params;
288 Teuchos::RCP<const Epetra_Map>
x_map;
291 Teuchos::RCP<const Epetra_Map>
f_map;
297 Teuchos::RCP<const EpetraExt::MultiComm>
sg_comm;
305 Teuchos::RCP<const Stokhos::Sparse3Tensor<int,double> >
Cijk;
356 Teuchos::Array< Teuchos::RCP<const Epetra_Map> >
sg_p_map;
359 Teuchos::Array< Teuchos::RCP< Teuchos::Array<std::string> > >
sg_p_names;
371 Teuchos::Array< Teuchos::RCP<const Epetra_Map> >
sg_g_map;
380 mutable Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly >
f_sg_blocks;
383 mutable Teuchos::RCP< Stokhos::EpetraOperatorOrthogPoly >
W_sg_blocks;
385 mutable Teuchos::Array< Teuchos::RCP< Stokhos::EpetraMultiVectorOrthogPoly > >
dfdp_sg_blocks;
391 mutable Teuchos::Array< Teuchos::RCP< Stokhos::EpetraMultiVectorOrthogPoly > >
dgdx_sg_blocks;
394 Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly>
sg_x_init;
397 Teuchos::Array< Teuchos::RCP<Stokhos::EpetraVectorOrthogPoly> >
sg_p_init;
406 mutable Teuchos::RCP<Epetra_CrsMatrix>
my_W;
409 mutable Teuchos::RCP<Epetra_Vector>
my_x;
413 mutable Teuchos::RCP<Stokhos::AdaptivityManager>
adaptMngr;
A container class storing an orthogonal polynomial whose coefficients are vectors,...
Abstract base class for multivariate orthogonal polynomials.
Abstract base class for orthogonal polynomial-based expansions.
Abstract base class for multivariate orthogonal polynomials generated from tensor products of univari...
Abstract base class for quadrature methods.
Base class for stochastic Galerkin model evaluators.
Nonlinear, stochastic Galerkin ModelEvaluator that constructs an adapted Jacobian.
Teuchos::RCP< const Epetra_Vector > get_x_init() const
Return initial solution.
Teuchos::RCP< Stokhos::OrthogPolyExpansion< int, double > > sg_exp
Stochastic Galerkin expansion.
Teuchos::RCP< const Epetra_Import > get_x_sg_importer() const
Return x sg importer.
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.
unsigned int num_sg_blocks
Number of stochastic blocks.
void evalModel(const InArgs &inArgs, const OutArgs &outArgs) const
Evaluate model on InArgs.
Teuchos::RCP< const Epetra_Vector > get_p_init(int l) const
Return initial parameters.
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.
OutArgs createOutArgs() const
Create OutArgs.
Teuchos::Array< Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > > sg_p_init
SG initial p.
Teuchos::RCP< const Epetra_Map > sg_f_map
Block SG residual map.
Teuchos::Array< Teuchos::RCP< Teuchos::Array< std::string > > > sg_p_names
SG coefficient parameter names.
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > f_sg_blocks
f stochastic Galerkin components
Teuchos::RCP< const Stokhos::EpetraVectorOrthogPoly > get_x_sg_init() const
Return initial SG x.
Teuchos::Array< Teuchos::RCP< Stokhos::EpetraMultiVectorOrthogPoly > > dgdx_dot_sg_blocks
dg/dxdot stochastic Galerkin components
Teuchos::RCP< const Epetra_BlockMap > stoch_row_map
Map for stochastic blocks.
Teuchos::Array< Teuchos::RCP< Stokhos::EpetraMultiVectorOrthogPoly > > dgdx_sg_blocks
dg/dx stochastic Galerkin components
Teuchos::Array< int > sg_p_index_map
Index map between block-p and p_sg maps.
bool eval_W_with_f
Whether to always evaluate W with f.
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > x_sg_blocks
x stochastic Galerkin components
Teuchos::RCP< EpetraExt::ModelEvaluator > me
Underlying model evaluator.
std::vector< Teuchos::RCP< const Stokhos::ProductBasis< int, double > > > sg_row_dof_basis
Teuchos::RCP< const Epetra_Map > get_x_map() const
Return solution vector map.
Teuchos::RCP< Stokhos::EpetraOperatorOrthogPoly > W_sg_blocks
W stochastic Galerkin components.
Teuchos::RCP< const Epetra_BlockMap > get_overlap_stochastic_map() const
Return overlap stochastic map.
Teuchos::Array< Teuchos::RCP< Stokhos::EpetraMultiVectorOrthogPoly > > dfdp_sg_blocks
Teuchos::RCP< const Epetra_BlockMap > overlapped_stoch_row_map
Overlapped map for stochastic blocks (local map)
Teuchos::RCP< const Epetra_Map > f_map
Underlying residual 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.
int num_g_sg
Number of stochastic response vectors.
Teuchos::Array< Teuchos::RCP< const Epetra_Map > > sg_g_map
Block SG response map.
void set_p_sg_init(int i, const Stokhos::EpetraVectorOrthogPoly &p_sg_in)
Set initial parameter polynomial.
Teuchos::RCP< const Epetra_Map > get_g_map(int l) const
Return response 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::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::Array< Teuchos::RCP< const Epetra_Map > > sg_p_map
Block SG parameter map.
Teuchos::RCP< const Teuchos::Array< std::string > > get_p_names(int l) const
Return array of parameter names.
Teuchos::RCP< Epetra_Import > adapted_overlapped_x_importer
Importer from SG to SG-overlapped maps.
unsigned int num_p_blocks
Number of p stochastic blocks (may be smaller than num_sg_blocks)
Teuchos::Array< Teuchos::RCP< const Epetra_Map > > get_g_sg_base_maps() const
Get base maps of SG responses.
Teuchos::RCP< const Epetra_Map > adapted_overlapped_f_map
Adapted block SG overlapped residual map.
unsigned int num_W_blocks
Number of W stochastic blocks (may be smaller than num_sg_blocks)
Teuchos::RCP< const Epetra_Map > sg_overlapped_f_map
Block SG overlapped residual map.
Teuchos::RCP< const Stokhos::ParallelData > sg_parallel_data
Parallel SG data.
Teuchos::RCP< Epetra_Vector > my_x
x pointer for evaluating preconditioner
InArgs createInArgs() const
Create InArgs.
Teuchos::Array< int > get_g_sg_map_indices() const
Get indices of SG responses.
Teuchos::RCP< const Epetra_Map > sg_overlapped_x_map
Block SG overlapped unknown map.
Teuchos::RCP< const Epetra_Map > adapted_f_map
Adapted block SG residual map.
Teuchos::RCP< Stokhos::AdaptivityManager > adaptMngr
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< Epetra_CrsMatrix > my_W
W pointer for evaluating W with f.
Teuchos::Array< int > sg_g_index_map
Index map between block-g and g_sg maps.
Teuchos::RCP< const Stokhos::OrthogPolyBasis< int, double > > sg_basis
Stochastic Galerkin basis.
Teuchos::RCP< const Stokhos::AdaptivityManager > getAdaptivityManager() const
Teuchos::RCP< const Epetra_Map > x_map
Underlying unknown 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< const Stokhos::Quadrature< int, double > > sg_quad
Stochastic Galerkin quadrature.
Teuchos::RCP< const Stokhos::EpetraVectorOrthogPoly > get_p_sg_init(int l) const
Return initial SG parameters.
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > x_dot_sg_blocks
x_dot stochastic Galerkin components
Teuchos::RCP< const Epetra_Map > get_f_map() const
Return residual vector map.
Teuchos::RCP< const Stokhos::Sparse3Tensor< int, double > > Cijk
int num_p_sg
Number of stochastic parameter vectors.
Teuchos::RCP< Teuchos::ParameterList > params
Algorithmic parameters.
Teuchos::RCP< Epetra_Operator > create_W() const
Create W = alpha*M + beta*J matrix.
Teuchos::RCP< const Epetra_BlockMap > get_x_sg_overlap_map() const
Return x sg overlap map.
int num_g
Number of response vectors of underlying model evaluator.
Teuchos::RCP< const Epetra_Map > get_p_map(int l) const
Return parameter vector map.
Teuchos::Array< int > get_p_sg_map_indices() const
Get indices of SG parameters.
Teuchos::RCP< const Epetra_Map > adapted_x_map
Adapted lock SG unknown map.
Teuchos::RCP< const Epetra_Map > sg_x_map
Block SG unknown map.
void set_x_sg_init(const Stokhos::EpetraVectorOrthogPoly &x_sg_in)
Set initial solution polynomial.
Teuchos::RCP< const EpetraExt::MultiComm > sg_comm
Parallel SG communicator.
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< const Epetra_Map > adapted_overlapped_x_map
Adapated block SG overlapped unknown 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< const Epetra_BlockMap > overlapped_stoch_p_map
Overlapped map for p stochastic blocks (local map)
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > create_p_sg(int l, Epetra_DataAccess CV=Copy, const Epetra_Vector *v=0) const
Create vector orthog poly using p map.
int num_p
Number of parameter vectors of underlying model evaluator.
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.
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > sg_x_init
SG initial x.
bool supports_x
Whether we support x (and thus f and W)
Teuchos::RCP< Epetra_Export > adapted_overlapped_f_exporter
Exporter from SG-overlapped to SG maps.
Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > serialCijk
Serial Epetra Cijk for dgdx*.
Teuchos::RCP< const Stokhos::EpetraSparse3Tensor > epetraCijk
Epetra Cijk.
Top-level namespace for Stokhos classes and functions.