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

This class computes the solution to $J x = b$ using the Nic-Day method. More...

#include <LOCA_SingularJacobianSolve_NicDay.H>

Inheritance diagram for LOCA::SingularJacobianSolve::NicDay:
Inheritance graph
[legend]
Collaboration diagram for LOCA::SingularJacobianSolve::NicDay:
Collaboration graph
[legend]

Public Member Functions

 NicDay (Teuchos::ParameterList &params)
 Constructor.
 
 NicDay (const NicDay &source)
 Copy constructor.
 
virtual ~NicDay ()
 Destructor.
 
virtual
LOCA::SingularJacobianSolve::Generic
clone () const
 Clone function.
 
virtual
LOCA::SingularJacobianSolve::Generic
operator= (const LOCA::SingularJacobianSolve::Generic &source)
 Assignment operator.
 
virtual NicDayoperator= (const NicDay &source)
 Assignment operator.
 
virtual
NOX::Abstract::Group::ReturnType 
reset (Teuchos::ParameterList &params)
 Reset parameters. More...
 
virtual
NOX::Abstract::Group::ReturnType 
compute (Teuchos::ParameterList &params, LOCA::Continuation::AbstractGroup &grp, const NOX::Abstract::Vector &input, const NOX::Abstract::Vector &approxNullVec, const NOX::Abstract::Vector &jacApproxNullVec, NOX::Abstract::Vector &result)
 Computes the solution as described above.
 
virtual
NOX::Abstract::Group::ReturnType 
computeMulti (Teuchos::ParameterList &params, LOCA::Continuation::AbstractGroup &grp, const NOX::Abstract::Vector *const *inputs, const NOX::Abstract::Vector &approxNullVec, const NOX::Abstract::Vector &jacApproxNullVec, NOX::Abstract::Vector **results, int nVecs)
 Computes solution for multiple RHS.
 
- Public Member Functions inherited from LOCA::SingularJacobianSolve::Generic
 Generic ()
 Constructor. More...
 
 Generic (const Generic &source)
 Copy constructor.
 
virtual ~Generic ()
 Destructor.
 

Detailed Description

This class computes the solution to $J x = b$ using the Nic-Day method.

This singular solve method is a modification of the deflation idea implemented in LOCA::SingularJacobianSolve::Nic where deflation of the right hand side is used to improve the conditioning of the linear system. Typically a solution to $J x = b$ when $J$ is nearly singular will have a large component in the direction of the null vector $v$. The idea then is to deflate $Jv$ out of the right hand side $b$. The complete algorithm used here is:

\[ \begin{aligned} &\tilde{b} = b - \frac{b^T J v}{v^T J^T J v} Jv \\ &\text{Solve}\; J\tilde{x} = \tilde{b} \\ &x = \tilde{x} + \frac{b^T J v}{v^T J^T J v} v \end{aligned} \]

The solve $J\tilde{x} = \tilde{b}$ uses the underlying group's applyJacobianInverse() method and therefore this is a generic technique for computing solutions to nearly singular system since it uses any supplied linear solver.

This algorithm is selected by setting the "Method" parameter of the "Singular Solve" sublist of the NOX linear solver parameter list to "Nic-Day". The idea for this algorithm is taken from: R. A. Nicolaides, "Deflation of Conjugate Gradients With Applications to Boundary Value Problems," SIAM J. Numer. Anal., 24(2), 1987.

Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::SingularJacobianSolve::NicDay::reset ( Teuchos::ParameterList params)
virtual

Reset parameters.

There are no additional parameters for the NicDay calculation.

Implements LOCA::SingularJacobianSolve::Generic.

References NOX::Abstract::Group::Ok.

Referenced by NicDay().


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