#include <LOCA_DerivUtils.H>
Public Member Functions | |
DerivUtils (const Teuchos::RCP< LOCA::GlobalData > &global_data, double perturb=1.0e-6) | |
Default constructor. perturb is the relative perturbation size used in differencing calculations. | |
DerivUtils (const DerivUtils &) | |
Copy constructor. | |
virtual | ~DerivUtils () |
Destructor. | |
virtual Teuchos::RCP< DerivUtils > | clone (NOX::CopyType type=NOX::DeepCopy) const |
Cloning function. Creates a copy of the DerivUtils object of the same type. | |
virtual NOX::Abstract::Group::ReturnType | computeDfDp (LOCA::MultiContinuation::AbstractGroup &grp, const vector< int > ¶m_ids, NOX::Abstract::MultiVector &result, bool isValidF) const |
Compute derivative of f with respect to parameter, identified by param_id. | |
virtual NOX::Abstract::Group::ReturnType | computeDJnDp (LOCA::MultiContinuation::AbstractGroup &, const vector< int > ¶mIDs, const NOX::Abstract::Vector &nullVector, NOX::Abstract::MultiVector &result, bool isValid) const |
Compute derivative of Jn with respect to particular parameter param_id. | |
virtual NOX::Abstract::Group::ReturnType | computeDJnDxa (LOCA::MultiContinuation::AbstractGroup &grp, const NOX::Abstract::Vector &nullVector, const NOX::Abstract::MultiVector &aVector, NOX::Abstract::MultiVector &result) const |
Compute vector (Jn)_{x}a given multi-vector a. | |
virtual NOX::Abstract::Group::ReturnType | computeDJnDxa (LOCA::MultiContinuation::AbstractGroup &grp, const NOX::Abstract::Vector &nullVector, const NOX::Abstract::MultiVector &aVector, const NOX::Abstract::Vector &JnVector, NOX::Abstract::MultiVector &result) const |
Compute vector (Jn)_{x}a given multi-vector a, given JnVector. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtJnDp (LOCA::MultiContinuation::AbstractGroup &grp, const vector< int > ¶mIDs, const NOX::Abstract::Vector &w, const NOX::Abstract::Vector &nullVector, NOX::Abstract::MultiVector::DenseMatrix &result, bool isValid) const |
Compute derivative of w^TJn with respect to particular parameter param_id. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtJDp (LOCA::MultiContinuation::AbstractGroup &grp, const vector< int > ¶mIDs, const NOX::Abstract::Vector &w, NOX::Abstract::MultiVector &result, bool isValid) const |
Compute derivative of w^TJ with respect to particular parameter param_id. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtJnDx (LOCA::MultiContinuation::AbstractGroup &grp, const NOX::Abstract::Vector &w, const NOX::Abstract::Vector &nullVector, NOX::Abstract::Vector &result) const |
Compute vector (w^TJn)_{x}. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtJnDx (LOCA::MultiContinuation::AbstractGroup &grp, const NOX::Abstract::MultiVector &w, const NOX::Abstract::Vector &nullVector, NOX::Abstract::MultiVector &result) const |
Compute vector (w^TJn)_{x}. | |
virtual NOX::Abstract::Group::ReturnType | computeDCeDp (LOCA::Hopf::MooreSpence::AbstractGroup &grp, const vector< int > ¶mIDs, const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, NOX::Abstract::MultiVector &result_real, NOX::Abstract::MultiVector &result_imag, bool isValid) const |
Compute derivative of (J+iwM)(y+iz) with respect to parameter,. | |
virtual NOX::Abstract::Group::ReturnType | computeDCeDxa (LOCA::Hopf::MooreSpence::AbstractGroup &grp, const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const NOX::Abstract::MultiVector &aVector, NOX::Abstract::MultiVector &result_real, NOX::Abstract::MultiVector &result_imag) const |
Compute vector (J+iwM)(y+iz))_{x}a given a. | |
virtual NOX::Abstract::Group::ReturnType | computeDCeDxa (LOCA::Hopf::MooreSpence::AbstractGroup &grp, const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const NOX::Abstract::MultiVector &aVector, const NOX::Abstract::Vector &Ce_real, const NOX::Abstract::Vector &Ce_imag, NOX::Abstract::MultiVector &result_real, NOX::Abstract::MultiVector &result_imag) const |
Compute vector (J+iwM)(y+iz))_{x}a given a and (J+iwM)(y+iz) vector. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtCeDp (LOCA::Hopf::MinimallyAugmented::AbstractGroup &grp, const vector< int > ¶mIDs, const NOX::Abstract::Vector &w1, const NOX::Abstract::Vector &w2, const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double omega, NOX::Abstract::MultiVector::DenseMatrix &result_real, NOX::Abstract::MultiVector::DenseMatrix &result_imag, bool isValid) const |
Compute derivative of (w1+iw2)^T(J+iwM)(y+iz) w.r.t. parameter p. | |
virtual NOX::Abstract::Group::ReturnType | computeDwtCeDx (LOCA::Hopf::MinimallyAugmented::AbstractGroup &grp, const NOX::Abstract::Vector &w1, const NOX::Abstract::Vector &w2, const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double omega, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag) const |
Compute vector (w1+iw2)^T(J+iwM)(y+iz))_{x}. | |
Protected Member Functions | |
virtual double | perturbParam (LOCA::MultiContinuation::AbstractGroup &grp, double ¶m, int param_id) const |
Perturb parameter param_id in the group's parameter vector, and return perturbation size. | |
virtual double | perturbXVec (LOCA::MultiContinuation::AbstractGroup &grp, const NOX::Abstract::Vector &xVector, const NOX::Abstract::Vector &aVector) const |
Perturb group's solution vector in direction of aVector, and return perturbation size. | |
virtual double | epsScalar (double p) const |
Return perturbation for finite differencing around given double variable. | |
virtual double | epsVector (const NOX::Abstract::Vector &xVector, const NOX::Abstract::Vector &aVector) const |
Return perturbation for directional derivatives around first vector in direction of second vector. | |
Protected Attributes | |
Teuchos::RCP< LOCA::GlobalData > | globalData |
Global data. | |
double | perturb |
Relative perturbation size using in differencing calculations. |
The DerivUtils class provides generic methods to compute the following derivatives:
where and
,
are vectors. These quantities are calculate by finite differencing.
Definition at line 79 of file LOCA_DerivUtils.H.
LOCA::DerivUtils::DerivUtils | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data, | |
double | perturb = 1.0e-6 | |||
) |
Default constructor. perturb is the relative perturbation size used in differencing calculations.
Definition at line 55 of file LOCA_DerivUtils.C.
Referenced by clone().
LOCA::DerivUtils::DerivUtils | ( | const DerivUtils & | source | ) |
LOCA::DerivUtils::~DerivUtils | ( | ) | [virtual] |
Teuchos::RCP< LOCA::DerivUtils > LOCA::DerivUtils::clone | ( | NOX::CopyType | type = NOX::DeepCopy |
) | const [virtual] |
Cloning function. Creates a copy of the DerivUtils object of the same type.
Reimplemented in LOCA::Epetra::ModelEvaluatorInterface.
Definition at line 77 of file LOCA_DerivUtils.C.
References DerivUtils().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDfDp | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const vector< int > & | param_ids, | |||
NOX::Abstract::MultiVector & | result, | |||
bool | isValidF | |||
) | const [virtual] |
Compute derivative of f with respect to parameter, identified by param_id.
Reimplemented in LOCA::Epetra::ModelEvaluatorInterface.
Definition at line 83 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::computeF(), NOX::Abstract::Group::getF(), globalData, NOX::Abstract::Group::Ok, perturbParam(), NOX::Abstract::Vector::scale(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::Abstract::Vector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDJnDp | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const vector< int > & | paramIDs, | |||
const NOX::Abstract::Vector & | nullVector, | |||
NOX::Abstract::MultiVector & | result, | |||
bool | isValid | |||
) | const [virtual] |
Compute derivative of Jn with respect to particular parameter param_id.
Definition at line 135 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Group::computeJacobian(), globalData, NOX::Abstract::Group::Ok, perturbParam(), NOX::Abstract::Vector::scale(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::Abstract::Vector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDJnDxa | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | nullVector, | |||
const NOX::Abstract::MultiVector & | aVector, | |||
NOX::Abstract::MultiVector & | result | |||
) | const [virtual] |
Compute vector (Jn)_{x}a given multi-vector a.
Definition at line 198 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), NOX::Abstract::Group::computeJacobian(), globalData, NOX::Abstract::Group::isJacobian(), NOX::Abstract::Group::Ok, and NOX::ShapeCopy.
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDJnDxa | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | nullVector, | |||
const NOX::Abstract::MultiVector & | aVector, | |||
const NOX::Abstract::Vector & | JnVector, | |||
NOX::Abstract::MultiVector & | result | |||
) | const [virtual] |
Compute vector (Jn)_{x}a given multi-vector a, given JnVector.
Definition at line 233 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), NOX::Abstract::Group::computeJacobian(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, NOX::Abstract::MultiVector::numVectors(), perturbXVec(), NOX::Abstract::MultiVector::scale(), NOX::Abstract::Group::setX(), and NOX::Abstract::MultiVector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtJnDp | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const vector< int > & | paramIDs, | |||
const NOX::Abstract::Vector & | w, | |||
const NOX::Abstract::Vector & | nullVector, | |||
NOX::Abstract::MultiVector::DenseMatrix & | result, | |||
bool | isValid | |||
) | const [virtual] |
Compute derivative of w^TJn with respect to particular parameter param_id.
Definition at line 276 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), NOX::Abstract::Group::computeJacobian(), globalData, NOX::Abstract::Vector::innerProduct(), NOX::Abstract::Group::Ok, perturbParam(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::ShapeCopy.
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtJDp | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const vector< int > & | paramIDs, | |||
const NOX::Abstract::Vector & | w, | |||
NOX::Abstract::MultiVector & | result, | |||
bool | isValid | |||
) | const [virtual] |
Compute derivative of w^TJ with respect to particular parameter param_id.
Definition at line 353 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobianTranspose(), NOX::Abstract::Group::computeJacobian(), globalData, NOX::Abstract::Group::Ok, perturbParam(), NOX::Abstract::Vector::scale(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::Abstract::Vector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtJnDx | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | w, | |||
const NOX::Abstract::Vector & | nullVector, | |||
NOX::Abstract::Vector & | result | |||
) | const [virtual] |
Compute vector (w^TJn)_{x}.
Definition at line 416 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobianTranspose(), NOX::Abstract::Vector::clone(), NOX::Abstract::Group::computeJacobian(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, perturbXVec(), NOX::Abstract::Vector::scale(), NOX::Abstract::Group::setX(), NOX::ShapeCopy, and NOX::Abstract::Vector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtJnDx | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const NOX::Abstract::MultiVector & | w, | |||
const NOX::Abstract::Vector & | nullVector, | |||
NOX::Abstract::MultiVector & | result | |||
) | const [virtual] |
Compute vector (w^TJn)_{x}.
Definition at line 466 of file LOCA_DerivUtils.C.
References NOX::Abstract::Group::applyJacobianTransposeMultiVector(), NOX::Abstract::Vector::clone(), NOX::Abstract::MultiVector::clone(), NOX::Abstract::Group::computeJacobian(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, perturbXVec(), NOX::Abstract::MultiVector::scale(), NOX::Abstract::Group::setX(), NOX::ShapeCopy, and NOX::Abstract::MultiVector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDCeDp | ( | LOCA::Hopf::MooreSpence::AbstractGroup & | grp, | |
const vector< int > & | paramIDs, | |||
const NOX::Abstract::Vector & | yVector, | |||
const NOX::Abstract::Vector & | zVector, | |||
double | w, | |||
NOX::Abstract::MultiVector & | result_real, | |||
NOX::Abstract::MultiVector & | result_imag, | |||
bool | isValid | |||
) | const [virtual] |
Compute derivative of (J+iwM)(y+iz) with respect to parameter,.
Definition at line 516 of file LOCA_DerivUtils.C.
References LOCA::Hopf::MooreSpence::AbstractGroup::applyComplex(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), globalData, NOX::Abstract::Group::Ok, perturbParam(), NOX::Abstract::Vector::scale(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::Abstract::Vector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDCeDxa | ( | LOCA::Hopf::MooreSpence::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | yVector, | |||
const NOX::Abstract::Vector & | zVector, | |||
double | w, | |||
const NOX::Abstract::MultiVector & | aVector, | |||
NOX::Abstract::MultiVector & | result_real, | |||
NOX::Abstract::MultiVector & | result_imag | |||
) | const [virtual] |
Compute vector (J+iwM)(y+iz))_{x}a given a.
Definition at line 587 of file LOCA_DerivUtils.C.
References LOCA::Hopf::MooreSpence::AbstractGroup::applyComplex(), NOX::Abstract::Vector::clone(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), globalData, and NOX::ShapeCopy.
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDCeDxa | ( | LOCA::Hopf::MooreSpence::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | yVector, | |||
const NOX::Abstract::Vector & | zVector, | |||
double | w, | |||
const NOX::Abstract::MultiVector & | aVector, | |||
const NOX::Abstract::Vector & | Ce_real, | |||
const NOX::Abstract::Vector & | Ce_imag, | |||
NOX::Abstract::MultiVector & | result_real, | |||
NOX::Abstract::MultiVector & | result_imag | |||
) | const [virtual] |
Compute vector (J+iwM)(y+iz))_{x}a given a and (J+iwM)(y+iz) vector.
Definition at line 628 of file LOCA_DerivUtils.C.
References LOCA::Hopf::MooreSpence::AbstractGroup::applyComplex(), NOX::Abstract::Vector::clone(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, NOX::Abstract::MultiVector::numVectors(), NOX::Abstract::Group::Ok, perturbXVec(), NOX::Abstract::MultiVector::scale(), NOX::Abstract::Group::setX(), and NOX::Abstract::MultiVector::update().
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtCeDp | ( | LOCA::Hopf::MinimallyAugmented::AbstractGroup & | grp, | |
const vector< int > & | paramIDs, | |||
const NOX::Abstract::Vector & | w1, | |||
const NOX::Abstract::Vector & | w2, | |||
const NOX::Abstract::Vector & | yVector, | |||
const NOX::Abstract::Vector & | zVector, | |||
double | omega, | |||
NOX::Abstract::MultiVector::DenseMatrix & | result_real, | |||
NOX::Abstract::MultiVector::DenseMatrix & | result_imag, | |||
bool | isValid | |||
) | const [virtual] |
Compute derivative of (w1+iw2)^T(J+iwM)(y+iz) w.r.t. parameter p.
Definition at line 681 of file LOCA_DerivUtils.C.
References LOCA::Hopf::MooreSpence::AbstractGroup::applyComplex(), NOX::Abstract::Vector::clone(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), globalData, NOX::Abstract::Vector::innerProduct(), NOX::Abstract::Group::Ok, perturbParam(), LOCA::MultiContinuation::AbstractGroup::setParam(), and NOX::ShapeCopy.
NOX::Abstract::Group::ReturnType LOCA::DerivUtils::computeDwtCeDx | ( | LOCA::Hopf::MinimallyAugmented::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | w1, | |||
const NOX::Abstract::Vector & | w2, | |||
const NOX::Abstract::Vector & | yVector, | |||
const NOX::Abstract::Vector & | zVector, | |||
double | omega, | |||
NOX::Abstract::Vector & | result_real, | |||
NOX::Abstract::Vector & | result_imag | |||
) | const [virtual] |
Compute vector (w1+iw2)^T(J+iwM)(y+iz))_{x}.
Definition at line 758 of file LOCA_DerivUtils.C.
References LOCA::Hopf::MinimallyAugmented::AbstractGroup::applyComplexTranspose(), NOX::Abstract::Vector::clone(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, NOX::Abstract::Group::Ok, perturbXVec(), NOX::Abstract::Vector::scale(), NOX::Abstract::Group::setX(), NOX::ShapeCopy, and NOX::Abstract::Vector::update().
double LOCA::DerivUtils::perturbParam | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
double & | param, | |||
int | param_id | |||
) | const [protected, virtual] |
Perturb parameter param_id in the group's parameter vector, and return perturbation size.
Definition at line 861 of file LOCA_DerivUtils.C.
References epsScalar(), LOCA::MultiContinuation::AbstractGroup::getParam(), and LOCA::MultiContinuation::AbstractGroup::setParam().
Referenced by computeDCeDp(), computeDfDp(), computeDJnDp(), computeDwtCeDp(), computeDwtJDp(), and computeDwtJnDp().
double LOCA::DerivUtils::perturbXVec | ( | LOCA::MultiContinuation::AbstractGroup & | grp, | |
const NOX::Abstract::Vector & | xVector, | |||
const NOX::Abstract::Vector & | aVector | |||
) | const [protected, virtual] |
Perturb group's solution vector in direction of aVector, and return perturbation size.
Definition at line 879 of file LOCA_DerivUtils.C.
References NOX::Abstract::Vector::clone(), NOX::DeepCopy, epsVector(), and NOX::Abstract::Group::setX().
Referenced by computeDCeDxa(), computeDJnDxa(), computeDwtCeDx(), and computeDwtJnDx().
double LOCA::DerivUtils::epsScalar | ( | double | p | ) | const [protected, virtual] |
Return perturbation for finite differencing around given double variable.
Definition at line 898 of file LOCA_DerivUtils.C.
References perturb.
Referenced by perturbParam().
double LOCA::DerivUtils::epsVector | ( | const NOX::Abstract::Vector & | xVector, | |
const NOX::Abstract::Vector & | aVector | |||
) | const [protected, virtual] |
Return perturbation for directional derivatives around first vector in direction of second vector.
Definition at line 904 of file LOCA_DerivUtils.C.
References NOX::Abstract::Vector::norm(), perturb, and NOX::Abstract::Vector::TwoNorm.
Referenced by perturbXVec().
Teuchos::RCP<LOCA::GlobalData> LOCA::DerivUtils::globalData [protected] |
Global data.
Definition at line 264 of file LOCA_DerivUtils.H.
Referenced by computeDCeDp(), computeDCeDxa(), computeDfDp(), computeDJnDp(), computeDJnDxa(), computeDwtCeDp(), computeDwtCeDx(), computeDwtJDp(), computeDwtJnDp(), and computeDwtJnDx().
double LOCA::DerivUtils::perturb [protected] |
Relative perturbation size using in differencing calculations.
Definition at line 267 of file LOCA_DerivUtils.H.
Referenced by epsScalar(), and epsVector().