LOCA::LAPACK::Group Class Reference

Extension of the NOX::LAPACK::Group to LOCA. More...

#include <LOCA_LAPACK_Group.H>

Inheritance diagram for LOCA::LAPACK::Group:

Collaboration diagram for LOCA::LAPACK::Group:
List of all members.

Public Member Functions

 Group (const Teuchos::RefCountPtr< LOCA::GlobalData > &global_data, LOCA::LAPACK::Interface &i)
 Group (const LOCA::LAPACK::Group &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
 ~Group ()
LOCA::LAPACK::Groupoperator= (const LOCA::LAPACK::Group &source)
 Assignment operator.
NOX::LAPACK::Matrix< double > & getJacobianMatrix ()
 Return reference to Jacobian matrix.
const NOX::LAPACK::Matrix<
double > & 
getJacobianMatrix () const
 Return reference to Jacobian matrix.
NOX::LAPACK::Matrix< double > & getShiftedMatrix ()
 Return reference to shifted matrix.
const NOX::LAPACK::Matrix<
double > & 
getShiftedMatrix () const
 Return reference to shifted matrix.
Overloaded NOX::LAPACK::Group methods.
NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
NOX::LAPACK::Groupoperator= (const NOX::LAPACK::Group &source)
 Assignment operator.
Teuchos::RefCountPtr< NOX::Abstract::Groupclone (NOX::CopyType type=NOX::DeepCopy) const
 Cloning function.
NOX::Abstract::Group::ReturnType computeF ()
 Overloaded computeF().
NOX::Abstract::Group::ReturnType computeJacobian ()
 Overloaded computeJacobian().
Implementation of LOCA::Abstract::TransposeSolveGroup methods.
virtual NOX::Abstract::Group::ReturnType applyJacobianTransposeInverse (Teuchos::ParameterList &params, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Solve Jacobian-tranpose system.
virtual NOX::Abstract::Group::ReturnType applyJacobianTransposeInverseMultiVector (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const
 Solve Jacobian-tranpose system with multiple right-hand sides.
Implementation of LOCA::MultiContinuation::AbstractGroup virtual methods.
virtual void copy (const NOX::Abstract::Group &source)
void setParams (const LOCA::ParameterVector &p)
 Set the parameter vector.
virtual void setParam (int paramID, double val)
 Set parameter indexed by paramID.
virtual void setParam (string paramID, double val)
 Set parameter indexed by paramID.
const LOCA::ParameterVectorgetParams () const
 Return a const reference to the parameter vector owned by the group.
virtual double getParam (int paramID) const
 Return copy of parameter indexed by paramID.
virtual double getParam (string paramID) const
 Return copy of parameter indexed by paramID.
virtual void projectToDraw (const NOX::Abstract::Vector &x, double *px) const
 Projects solution to a few scalars for multiparameter continuation.
virtual int projectToDrawDimension () const
 Returns the dimension of the project to draw array.
virtual double computeScaledDotProduct (const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b) const
 Compute a scaled dot product.
void printSolution (const double conParam) const
 Print out the solution vector and continuation parameter.
void printSolution (const NOX::Abstract::Vector &x_, const double conParam) const
 Print out a vector and a parameter.
virtual void scaleVector (NOX::Abstract::Vector &x) const
 Scales a vector.
Implementation of LOCA::TimeDependent::AbstractGroup virtual methods.
virtual NOX::Abstract::Group::ReturnType computeShiftedMatrix (double alpha, double beta)
 Compute the shifted matrix.
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrix (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Multiply the shifted matrix by a vector.
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrixMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const
 Multiply the shifted matrix by a multi-vector.
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrixInverseMultiVector (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const
 Apply the inverse of the shifted matrix by a multi-vector, as needed by the shift-and-invert and generalized Cayley transformations.
Implementation of LOCA::Hopf::MooreSpence::AbstractGroup virtual methods.
virtual bool isComplex () const
 Is $J+i\omega B$ valid.
virtual NOX::Abstract::Group::ReturnType computeComplex (double frequency)
 Compute $J+i\omega B$.
virtual NOX::Abstract::Group::ReturnType applyComplex (const NOX::Abstract::Vector &input_real, const NOX::Abstract::Vector &input_imag, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag) const
 Compute $(J+i\omega B)(y+iz)$.
virtual NOX::Abstract::Group::ReturnType applyComplexMultiVector (const NOX::Abstract::MultiVector &input_real, const NOX::Abstract::MultiVector &input_imag, NOX::Abstract::MultiVector &result_real, NOX::Abstract::MultiVector &result_imag) const
 Compute $(J+i\omega B)(y+iz)$.
virtual NOX::Abstract::Group::ReturnType applyComplexInverseMultiVector (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector &input_real, const NOX::Abstract::MultiVector &input_imag, NOX::Abstract::MultiVector &result_real, NOX::Abstract::MultiVector &result_imag) const
 Solve $(J+i\omega B)(y+iz) = a+ib$.
Implementation of LOCA::Homotopy::AbstractGroup virtual methods.
virtual NOX::Abstract::Group::ReturnType augmentJacobianForHomotopy (double conParamValue)
 Replace Jacobian $J$ by $pJ+(1-p)I$ where $I$ is the identity matrix and $p$ is a scalar.

Protected Member Functions

void resetIsValid ()
 resets isValid flags

Protected Attributes

Teuchos::RefCountPtr< LOCA::GlobalDataglobalData
 LOCA Global data object.
 Referece to current problem.
ParameterVector params
 vector of parameters
double > 
 Shifted matrix (alpha*J+beta*M).
double freq
 Frequency for Hopf calculations.
bool isValidComplex
 Flag indicating whether complex matrix is valid.
std::complex< double > > 
 Complex matrix.

Detailed Description

Extension of the NOX::LAPACK::Group to LOCA.

This class is derived both from the NOX::LAPACK::Group and LOCA::Abstract::Group classes and therefore inherits the implementation of the NOX::Abstract::Group interface provided by NOX::LAPACK::Group.

This class provides implementations of LOCA AbstractGroup virtual methods specific to the LAPACK group. It stores a parameter vector for setting/retrieving parameter values (LOCA::Continuation::AbstractGroup), provides a facility for computing eigenvalues (LOCA::Continuation::AbstractGroup) using the LAPACK routines DGEEV and DGGEV, augements the Jacobian matrix for homotopy (LOCA::Homotopy::AbstractGroup), and stores and manipulates a mass matrix (LOCA::Bifurcation::HopfBord::AbstractGroup). Since it is derived from the LOCA::Abstract::Group (which is in-turn derived from all FiniteDifference groups), this group implicitly uses the finite-difference implementations of parameter and second derivatives provided by the FiniteDifference groups. This group can therefore be used as an underlying group for all of LOCA's continuation and bifurcation algorithms.

The computeF() and computeJacobian() methods of the NOX::LAPACK::Group parent class are overloaded here. They both set the entire contents of the parameter vector in the problem interface before calling the NOX::LAPACK::Group computeF() and computeJacobian().

This group has several constructors supplying different information. All require a LOCA::LAPACK::Interface object to link to the application code. Set hasMassMat to true if the system has a mass matrix (only relevant for eigenvalue and Hopf calculations). Finally, separate used and allocated row/column dimensions can be specified. This functionality exists primarily to link with Fortran codes which preallocate all arrays to a fixed size but only use a portion of that array.

Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::LAPACK::Group::computeComplex double  frequency  )  [virtual]

Compute $J+i\omega B$.

The argument frequency stores $\omega$.

Reimplemented from LOCA::Abstract::Group.

NOX::Abstract::Group::ReturnType LOCA::LAPACK::Group::computeF  )  [virtual]

Overloaded computeF().

Calls LOCA::LAPACK::Interface::setParams before evalulating F.

Reimplemented from NOX::LAPACK::Group.

NOX::Abstract::Group::ReturnType LOCA::LAPACK::Group::computeJacobian  )  [virtual]

Overloaded computeJacobian().

Calls LOCA::LAPACK::Interface::setParams before evalulating J.

Reimplemented from NOX::LAPACK::Group.

double LOCA::LAPACK::Group::computeScaledDotProduct const NOX::Abstract::Vector a,
const NOX::Abstract::Vector b
const [virtual]

Compute a scaled dot product.

The implementation here is a.dot(b) / a.length()

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

void LOCA::LAPACK::Group::projectToDraw const NOX::Abstract::Vector x,
double *  px
const [virtual]

Projects solution to a few scalars for multiparameter continuation.

This method is called every time a solution is saved by the multiparameter continuation code MF for later visualization and should project the solution vector down to a few scalars. The array px will be preallocated to the proper length given by projectToDrawDimension().

The implementation here is to call the corresponding method in the interface.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

int LOCA::LAPACK::Group::projectToDrawDimension  )  const [virtual]

Returns the dimension of the project to draw array.

The implementation here is to call the corresponding method in the interface.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

void LOCA::LAPACK::Group::scaleVector NOX::Abstract::Vector x  )  const [virtual]

Scales a vector.

The implementation here is x.scale(1.0/sqrt(x.length))

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:38:33 2008 for NOX by doxygen