NOX::Parameter::UserNorm Class Reference

Derived from NOX::Parameter::Arbitrary class to support a user defined norm that can be passed in throught the parameter list. More...

#include <NOX_Parameter_UserNorm.H>

Inheritance diagram for NOX::Parameter::UserNorm:

[legend]
Collaboration diagram for NOX::Parameter::UserNorm:
[legend]
List of all members.

Public Member Functions

 UserNorm ()
 Default Constructor.
 ~UserNorm ()
 Destructor.
virtual double norm (const NOX::Abstract::Vector &input) const =0
 Computes a user defined norm based on the input vector. We assume the norm is of the type <a,b>^1/2.
Auxiliary Methods.
virtual double dot (const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b) const =0
 Computes the dot product $ a^Tb $ consistent with the the norm calculation above.

Detailed Description

Derived from NOX::Parameter::Arbitrary class to support a user defined norm that can be passed in throught the parameter list.

This class allows the user to write their own norm and pass it into the NOX solvers. Check the documentation for each class (line searches and Directions) to see whether it supports a UserNorm. Currently it is used by NOX::Direction::Newton for computing spcialized norms for the adjustable forcing term and in the NOX::LineSearch::Polynomial and NOX::LineSearch::MoreThuente2 line searches.

To create and use a user defined norm:

  1. Create a norm that derives from NOX::Parameter::UserNorm. For example, the norm Foo might be defined as shown below.

    class Foo : public NOX::Parameter::UserNorm {
    // Insert class definition here
    }
    

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

    Foo foo();
    params.sublist("Line Search").sublist("Polynomial").setParameter("User Defined Norm", foo);
    


Member Function Documentation

virtual double NOX::Parameter::UserNorm::dot const NOX::Abstract::Vector a,
const NOX::Abstract::Vector b
const [pure virtual]
 

Computes the dot product $ a^Tb $ consistent with the the norm calculation above.

In certain algorithms, the algorithm itself may depend on the type of norm calculted. For example, in the TrustRegionBased solver, the dogleg computation is based on the l-2 norm. If the user wishes to define their own norm, the trust region algorithm will fail to compute the correct direction because it calls dot() due to the l-2 norm assumption. Therefore, we allow the user to supply auxiliary functions that may be required if the norm definition is changed.


The documentation for this class was generated from the following file:
Generated on Thu Sep 18 12:43:34 2008 for NOX by doxygen 1.3.9.1