#include <LOCA_AnasaziOperator_ShiftInvert.H>
Public Member Functions | |
ShiftInvert (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &eigenParams, const Teuchos::RCP< Teuchos::ParameterList > &solverParams, const Teuchos::RCP< LOCA::TimeDependent::AbstractGroup > &grp) | |
Constructor. | |
virtual | ~ShiftInvert () |
Destructor. | |
virtual const string & | label () const |
Return name of this operator. | |
virtual void | apply (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &output) const |
Apply the operator. | |
virtual void | transformEigenvalue (double &ev_r, double &ev_i) const |
Transform eigenvalue. | |
virtual NOX::Abstract::Group::ReturnType | rayleighQuotient (const NOX::Abstract::Vector &evec_r, const NOX::Abstract::Vector &evec_i, double &rq_r, double &rq_i) const |
Compute Rayleigh quotient. | |
Protected Attributes | |
Teuchos::RCP< LOCA::GlobalData > | globalData |
Global data. | |
string | myLabel |
Name of this operator. | |
Teuchos::RCP < Teuchos::ParameterList > | eigenParams |
Stores parameters relating to the operator. | |
Teuchos::RCP < Teuchos::ParameterList > | solverParams |
Stores linear solver parameters. | |
Teuchos::RCP < LOCA::TimeDependent::AbstractGroup > | grp |
Stores group representing Jacobian and Mass matrix. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | tmp_r |
Stores a temporary vector for computing Rayleigh quotients. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | tmp_i |
Stores a temporary vector for computing Rayleigh quotients. | |
double | shift |
Stores shift value. |
This class implements the LOCA::AnasaziOperator::AbstractStrategy interface for computing generalized eigenvalues and eigenvectors
of the system
where is the Jacobian matrix and
is the mass matrix. The right-most eigenvalues are computed using shift-invert, i.e. solving
where is a real scalar. The resulting eigenvalue is
.
The parameters used by this class supplied in the constructor are:
Also the grp argument to the constructor must be a child of LOCA::TimeDependent::AbstractGroup for the shift-invert operations.
Definition at line 90 of file LOCA_AnasaziOperator_ShiftInvert.H.
LOCA::AnasaziOperator::ShiftInvert::ShiftInvert | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data, | |
const Teuchos::RCP< LOCA::Parameter::SublistParser > & | topParams, | |||
const Teuchos::RCP< Teuchos::ParameterList > & | eigenParams, | |||
const Teuchos::RCP< Teuchos::ParameterList > & | solverParams, | |||
const Teuchos::RCP< LOCA::TimeDependent::AbstractGroup > & | grp | |||
) |
Constructor.
Argument grp must be of type LOCA::TimeDependent::AbstractGroup. See class description for a list of eigenParams.
Definition at line 47 of file LOCA_AnasaziOperator_ShiftInvert.C.
References eigenParams, and shift.
LOCA::AnasaziOperator::ShiftInvert::~ShiftInvert | ( | ) | [virtual] |
const string & LOCA::AnasaziOperator::ShiftInvert::label | ( | ) | const [virtual] |
Return name of this operator.
Implements LOCA::AnasaziOperator::AbstractStrategy.
Definition at line 70 of file LOCA_AnasaziOperator_ShiftInvert.C.
References myLabel.
void LOCA::AnasaziOperator::ShiftInvert::apply | ( | const NOX::Abstract::MultiVector & | input, | |
NOX::Abstract::MultiVector & | output | |||
) | const [virtual] |
Apply the operator.
Applies the inverse of the shifted operator, i.e., solves
for , where
and
.
Implements LOCA::AnasaziOperator::AbstractStrategy.
Definition at line 76 of file LOCA_AnasaziOperator_ShiftInvert.C.
References NOX::Abstract::MultiVector::clone(), globalData, grp, NOX::Abstract::MultiVector::numVectors(), NOX::Abstract::Group::Ok, NOX::ShapeCopy, shift, solverParams, and tmp_r.
void LOCA::AnasaziOperator::ShiftInvert::transformEigenvalue | ( | double & | ev_r, | |
double & | ev_i | |||
) | const [virtual] |
Transform eigenvalue.
Transforms the given eigenvalue to the eigenvalue of the Jacobian-mass matrix system by shifting and inverting it.
Implements LOCA::AnasaziOperator::AbstractStrategy.
Definition at line 121 of file LOCA_AnasaziOperator_ShiftInvert.C.
References shift.
NOX::Abstract::Group::ReturnType LOCA::AnasaziOperator::ShiftInvert::rayleighQuotient | ( | const NOX::Abstract::Vector & | evec_r, | |
const NOX::Abstract::Vector & | evec_i, | |||
double & | rq_r, | |||
double & | rq_i | |||
) | const [virtual] |
Compute Rayleigh quotient.
Computes the Rayleigh quotient for the eigenvector
.
Implements LOCA::AnasaziOperator::AbstractStrategy.
Definition at line 131 of file LOCA_AnasaziOperator_ShiftInvert.C.
References NOX::Abstract::Vector::createMultiVector(), globalData, grp, NOX::Abstract::Vector::innerProduct(), NOX::Abstract::Group::Ok, NOX::ShapeCopy, tmp_i, and tmp_r.
Teuchos::RCP<LOCA::GlobalData> LOCA::AnasaziOperator::ShiftInvert::globalData [protected] |
Global data.
Definition at line 150 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by apply(), and rayleighQuotient().
string LOCA::AnasaziOperator::ShiftInvert::myLabel [protected] |
Name of this operator.
Definition at line 153 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by label().
Teuchos::RCP<Teuchos::ParameterList> LOCA::AnasaziOperator::ShiftInvert::eigenParams [protected] |
Stores parameters relating to the operator.
Definition at line 156 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by ShiftInvert().
Teuchos::RCP<Teuchos::ParameterList> LOCA::AnasaziOperator::ShiftInvert::solverParams [protected] |
Stores linear solver parameters.
Definition at line 159 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by apply().
Teuchos::RCP<LOCA::TimeDependent::AbstractGroup> LOCA::AnasaziOperator::ShiftInvert::grp [protected] |
Stores group representing Jacobian and Mass matrix.
Definition at line 162 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by apply(), and rayleighQuotient().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::AnasaziOperator::ShiftInvert::tmp_r [mutable, protected] |
Stores a temporary vector for computing Rayleigh quotients.
Definition at line 165 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by apply(), and rayleighQuotient().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::AnasaziOperator::ShiftInvert::tmp_i [mutable, protected] |
Stores a temporary vector for computing Rayleigh quotients.
Definition at line 168 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by rayleighQuotient().
double LOCA::AnasaziOperator::ShiftInvert::shift [protected] |
Stores shift value.
Definition at line 171 of file LOCA_AnasaziOperator_ShiftInvert.H.
Referenced by apply(), ShiftInvert(), and transformEigenvalue().