#include <NOX_Parameter_UserNorm.H>
Inheritance diagram for NOX::Parameter::UserNorm:
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 consistent with the the norm calculation above. | |
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:
Foo might be defined as shown below.
class Foo : public NOX::Parameter::UserNorm { // Insert class definition here }
Foo foo(); params.sublist("Line Search").sublist("Polynomial").setParameter("User Defined Norm", foo);
|
||||||||||||
|
Computes the dot product 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. |
1.3.9.1