NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
NOX::Observer Class Reference

NOX's pure virtual class to allow users to insert user defined operations into nox's solvers (before and after the NOX::Solver::Generic::step() and NOX::Solver::Generic::solve() methods). This is an Observer from GoF design pattern book. More...

#include <NOX_Observer.hpp>

Inheritance diagram for NOX::Observer:
Inheritance graph
[legend]

Public Member Functions

 Observer ()
 Constructor.
 
virtual ~Observer ()
 Destructor.
 
virtual void runPreIterate (const NOX::Solver::Generic &)
 User defined method that will be executed at the start of a call to NOX::Solver::Generic::step().
 
virtual void runPostIterate (const NOX::Solver::Generic &)
 User defined method that will be executed at the end of a call to NOX::Solver::Generic::step().
 
virtual void runPreSolve (const NOX::Solver::Generic &)
 User defined method that will be executed at the start of a call to NOX::Solver::Generic::solve().
 
virtual void runPostSolve (const NOX::Solver::Generic &)
 User defined method that will be executed at the end of a call to NOX::Solver::Generic::solve().
 
virtual void runPreSolutionUpdate (const NOX::Abstract::Vector &, const NOX::Solver::Generic &)
 User defined method that will be executed prior to the update of the solution vector during a call to NOX::Solver::Generic::step(). This is intended to allow users to adjust the direction before the solution update, typically based on knowledge of the problem formulation. The direction is const as we can't guarantee that changes to the direction won't violate assumptions of the solution algorithm. Users can change the update/direciton after a const cast, but NOX may not function as expected. Use at your own risk! More...
 
virtual void runPostSolutionUpdate (const NOX::Solver::Generic &)
 User defined method that will be executed after the update of the solution vector during a call to NOX::Solver::Generic::step(). This is intended to allow users to adjust the direction after the solution update, typically based on knowledge of the problem formulation (e.g. clipping negative mass fractions). The direction is const as we can't guarantee that changes to the direction won't violate assumptions of the solution algorithm. Users can change the update/direciton after a const cast, but NOX may not function as expected. Use at your own risk! More...
 
virtual void runPreLineSearch (const NOX::Solver::Generic &)
 User defined method that will be executed before a call to NOX::LineSearch::Generic::compute(). Only to be used in NOX::Solver::LineSearchBased!
 
virtual void runPostLineSearch (const NOX::Solver::Generic &)
 User defined method that will be executed after a call to NOX::LineSearch::Generic::compute(). Only to be used in NOX::Solver::LineSearchBased!
 

Detailed Description

NOX's pure virtual class to allow users to insert user defined operations into nox's solvers (before and after the NOX::Solver::Generic::step() and NOX::Solver::Generic::solve() methods). This is an Observer from GoF design pattern book.

The user should implement their own concrete implementation of this class and register it as a Teuchos::RCP<NOX::Abstract::PrePostoperator> in the "Solver Options" sublist.

To create and register a user defined pre/post operator:

  1. Create a pre/post operator that derives from NOX::Abstract::PrePostOperator. For example, the pre/post operator Foo might be defined as shown below.

    class Foo : public NOX::Abstract::PrePostOperator {
    // Insert class definition here
    }

  2. Create the appropriate entries in the parameter list, as follows.

    params.sublist("Solver Options").set("User Defined Pre/Post Operator", foo);

Member Function Documentation

virtual void NOX::Observer::runPostSolutionUpdate ( const NOX::Solver::Generic )
inlinevirtual

User defined method that will be executed after the update of the solution vector during a call to NOX::Solver::Generic::step(). This is intended to allow users to adjust the direction after the solution update, typically based on knowledge of the problem formulation (e.g. clipping negative mass fractions). The direction is const as we can't guarantee that changes to the direction won't violate assumptions of the solution algorithm. Users can change the update/direciton after a const cast, but NOX may not function as expected. Use at your own risk!

Parameters
[in]solver- the nox solver

Reimplemented in NOX::ObserverLog, and NOX::ObserverVector.

virtual void NOX::Observer::runPreSolutionUpdate ( const NOX::Abstract::Vector ,
const NOX::Solver::Generic  
)
inlinevirtual

User defined method that will be executed prior to the update of the solution vector during a call to NOX::Solver::Generic::step(). This is intended to allow users to adjust the direction before the solution update, typically based on knowledge of the problem formulation. The direction is const as we can't guarantee that changes to the direction won't violate assumptions of the solution algorithm. Users can change the update/direciton after a const cast, but NOX may not function as expected. Use at your own risk!

Parameters
[in]update- the direction vector that will be used to update the solution.
[in]solver- the nox solver

Reimplemented in NOX::ObserverLog, and NOX::ObserverVector.


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