EpetraExt Development
Public Member Functions
GLpApp::AdvDiffReactOptModel Class Reference

PDE-constrained inverse problem based on a 2D discretization of a diffusion/reaction system. More...

#include <GLpApp_AdvDiffReactOptModel.hpp>

Inheritance diagram for GLpApp::AdvDiffReactOptModel:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 AdvDiffReactOptModel (const Teuchos::RefCountPtr< const Epetra_Comm > &comm, const double beta, const double len_x, const double len_y, const int local_nx, const int local_ny, const char meshFile[], const int np, const double x0, const double p0, const double reactionRate, const bool normalizeBasis, const bool supportDerivatives)
 Constructor.
void set_q (Teuchos::RefCountPtr< const Epetra_Vector > const &q)
 
Teuchos::RefCountPtr
< GLpApp::GLpYUEpetraDataPool
getDataPool ()
 
Teuchos::RefCountPtr< const
Epetra_MultiVector
get_B_bar () const
 

Overridden from EpetraExt::ModelEvaluator .

Teuchos::RefCountPtr< const
Epetra_Map
get_x_map () const
 
Teuchos::RefCountPtr< const
Epetra_Map
get_f_map () const
 
Teuchos::RefCountPtr< const
Epetra_Map
get_p_map (int l) const
 .
Teuchos::RefCountPtr< const
Epetra_Map
get_g_map (int j) const
 .
Teuchos::RefCountPtr< const
Epetra_Vector
get_x_init () const
 
Teuchos::RefCountPtr< const
Epetra_Vector
get_p_init (int l) const
 
Teuchos::RefCountPtr< const
Epetra_Vector
get_x_lower_bounds () const
 
Teuchos::RefCountPtr< const
Epetra_Vector
get_x_upper_bounds () const
 
Teuchos::RefCountPtr< const
Epetra_Vector
get_p_lower_bounds (int l) const
 
Teuchos::RefCountPtr< const
Epetra_Vector
get_p_upper_bounds (int l) const
 
Teuchos::RefCountPtr
< Epetra_Operator
create_W () const
 
Teuchos::RefCountPtr
< Epetra_Operator
create_DfDp_op (int l) const
 
InArgs createInArgs () const
 
OutArgs createOutArgs () const
 
void evalModel (const InArgs &inArgs, const OutArgs &outArgs) const
 

Detailed Description

PDE-constrained inverse problem based on a 2D discretization of a diffusion/reaction system.

The model evaluator subclass is used to represent the simulation-constrained optimization problem:


  min   g(x,p)
  s.t.  f(x,p) = 0;

 

where:

The nuts and bolts of the implementation for this problem are contained in the C++ class GLpApp::GLpYUEpetraDataPool that was originally implemented by Denis Ridzal while a student at Rice University. The class GLpApp::GLpYUEpetraDataPool implements the basic operators and nonlinear functions but this class puts them together to form a valid the model in terms of a model evaluator interface.

This example problem demonstrates a few different aspects of the EpetraExt::ModelEvaluator interface:

How to manage parallel vector data. The state variables in x are managed as fully distributed parallel data while the flux sine-series parameter coefficients p are managed as locally replicated data.

Demonstrates shared compuation between the objective function g(x,p) and the simulation equality constraints f(x,p) and their derivatives. The intermediate vector B_bar*p is computed only once and is shared with the computation of g and f. The intermediate vector R*(B_bar*p) is computed once and shared between the computation of g and DgDp.

The functions AdvDiffReactOptModel() createInArgs(), createOutArgs() and evalModel() are fairly cleanly written and are appropriate to be studied in order to show how to implement other parallel simulation-constrained problems based on Epetra objects.

The mesh for the 2D domain can either be read in as a mesh data file give the files name or can be generated automatically on a square 2D domain.

The program triangle can be used to generate meshes for arbitary 2D geometries and then metis can be used to partition the mesh to multiple domains. Instructions for how to use triangle and metis to generate meshes is described ???here???.

Instead of reading in a mesh file, a square 2D mesh can be automatically generated given just the length in the x and y directions and the number of local elements in each direction. Currently, the square mesh is only partitioned in the x direction and therefore will not demonstrate great parallel scalability for large numbers of processors due to excessive amounts of shared boundary between processes.

ToDo: Finish Documentation!

Definition at line 119 of file GLpApp_AdvDiffReactOptModel.hpp.


Constructor & Destructor Documentation

GLpApp::AdvDiffReactOptModel::AdvDiffReactOptModel ( const Teuchos::RefCountPtr< const Epetra_Comm > &  comm,
const double  beta,
const double  len_x,
const double  len_y,
const int  local_nx,
const int  local_ny,
const char  meshFile[],
const int  np,
const double  x0,
const double  p0,
const double  reactionRate,
const bool  normalizeBasis,
const bool  supportDerivatives 
)

Constructor.

Definition at line 52 of file GLpApp_AdvDiffReactOptModel.cpp.


Member Function Documentation

void GLpApp::AdvDiffReactOptModel::set_q ( Teuchos::RefCountPtr< const Epetra_Vector > const &  q)

Definition at line 201 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< GLpApp::GLpYUEpetraDataPool > GLpApp::AdvDiffReactOptModel::getDataPool ( )

Definition at line 214 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_MultiVector > GLpApp::AdvDiffReactOptModel::get_B_bar ( ) const

Definition at line 220 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Map > GLpApp::AdvDiffReactOptModel::get_x_map ( ) const [virtual]

Implements EpetraExt::ModelEvaluator.

Definition at line 228 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Map > GLpApp::AdvDiffReactOptModel::get_f_map ( ) const [virtual]

Implements EpetraExt::ModelEvaluator.

Definition at line 234 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Map > GLpApp::AdvDiffReactOptModel::get_p_map ( int  l) const [virtual]

.

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 240 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Map > GLpApp::AdvDiffReactOptModel::get_g_map ( int  j) const [virtual]

.

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 247 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_x_init ( ) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 254 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_p_init ( int  l) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 260 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_x_lower_bounds ( ) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 267 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_x_upper_bounds ( ) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 273 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_p_lower_bounds ( int  l) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 279 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< const Epetra_Vector > GLpApp::AdvDiffReactOptModel::get_p_upper_bounds ( int  l) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 286 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< Epetra_Operator > GLpApp::AdvDiffReactOptModel::create_W ( ) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 293 of file GLpApp_AdvDiffReactOptModel.cpp.

Teuchos::RefCountPtr< Epetra_Operator > GLpApp::AdvDiffReactOptModel::create_DfDp_op ( int  l) const [virtual]

Reimplemented from EpetraExt::ModelEvaluator.

Definition at line 299 of file GLpApp_AdvDiffReactOptModel.cpp.

EpetraExt::ModelEvaluator::InArgs GLpApp::AdvDiffReactOptModel::createInArgs ( ) const [virtual]

Implements EpetraExt::ModelEvaluator.

Definition at line 307 of file GLpApp_AdvDiffReactOptModel.cpp.

EpetraExt::ModelEvaluator::OutArgs GLpApp::AdvDiffReactOptModel::createOutArgs ( ) const [virtual]

Implements EpetraExt::ModelEvaluator.

Definition at line 317 of file GLpApp_AdvDiffReactOptModel.cpp.

void GLpApp::AdvDiffReactOptModel::evalModel ( const InArgs inArgs,
const OutArgs outArgs 
) const [virtual]

Implements EpetraExt::ModelEvaluator.

Definition at line 366 of file GLpApp_AdvDiffReactOptModel.cpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines