|
NOX Development
|
LOCA's generic derivative computation class to compute various derivatives via finite differencing. More...
#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 std::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 std::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 std::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 std::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 std::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 std::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. | |
LOCA's generic derivative computation class to compute various derivatives via finite differencing.
The DerivUtils class provides generic methods to compute the following derivatives:
![\[\frac{\partial F}{\partial p},\quad\frac{\partial Jn}{\partial p},\quad\frac{\partial Jn}{\partial x}a
\]](form_448.png)
where 


| 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.
References globalData, and perturb.
Referenced by clone(), DerivUtils(), LOCA::Epetra::ModelEvaluatorInterface::ModelEvaluatorInterface(), and LOCA::Epetra::ModelEvaluatorInterface::ModelEvaluatorInterface().
| LOCA::DerivUtils::DerivUtils | ( | const DerivUtils & | source | ) |
Copy constructor.
References DerivUtils(), globalData, and perturb.
|
virtual |
Cloning function. Creates a copy of the DerivUtils object of the same type.
Reimplemented in LOCA::Epetra::ModelEvaluatorInterface.
References DerivUtils().
|
virtual |
Compute derivative of (J+iwM)(y+iz) with respect to parameter,.
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().
|
virtual |
Compute vector (J+iwM)(y+iz))_{x}a given a and (J+iwM)(y+iz) vector.
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().
|
virtual |
Compute vector (J+iwM)(y+iz))_{x}a given a.
References LOCA::Hopf::MooreSpence::AbstractGroup::applyComplex(), NOX::Abstract::Vector::clone(), LOCA::Hopf::MooreSpence::AbstractGroup::computeComplex(), computeDCeDxa(), globalData, and NOX::ShapeCopy.
Referenced by computeDCeDxa().
|
virtual |
Compute derivative of f with respect to parameter, identified by param_id.
Reimplemented in LOCA::Epetra::ModelEvaluatorInterface.
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().
|
virtual |
Compute derivative of Jn with respect to particular parameter param_id.
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().
|
virtual |
Compute vector (Jn)_{x}a given multi-vector a, given JnVector.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), NOX::Abstract::Group::computeJacobian(), NOX::DeepCopy, NOX::Abstract::Group::getX(), globalData, NOX::Abstract::Group::NotDefined, NOX::Abstract::MultiVector::numVectors(), perturbXVec(), NOX::Abstract::MultiVector::scale(), NOX::Abstract::Group::setX(), and NOX::Abstract::MultiVector::update().
|
virtual |
Compute vector (Jn)_{x}a given multi-vector a.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), computeDJnDxa(), NOX::Abstract::Group::computeJacobian(), globalData, NOX::Abstract::Group::isJacobian(), NOX::Abstract::Group::Ok, and NOX::ShapeCopy.
Referenced by computeDJnDxa().
|
virtual |
Compute derivative of (w1+iw2)^T(J+iwM)(y+iz) w.r.t. parameter p.
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.
|
virtual |
Compute vector (w1+iw2)^T(J+iwM)(y+iz))_{x}.
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().
|
virtual |
Compute derivative of w^TJ with respect to particular parameter param_id.
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().
|
virtual |
Compute derivative of w^TJn with respect to particular parameter param_id.
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.
|
virtual |
Compute vector (w^TJn)_{x}.
References NOX::Abstract::Group::applyJacobianTransposeMultiVector(), NOX::Abstract::MultiVector::clone(), NOX::Abstract::Vector::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().
|
virtual |
Compute vector (w^TJn)_{x}.
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().
|
protectedvirtual |
Return perturbation for finite differencing around given double variable.
References perturb.
Referenced by perturbParam().
|
protectedvirtual |
Return perturbation for directional derivatives around first vector in direction of second vector.
References NOX::Abstract::Vector::norm(), perturb, and NOX::Abstract::Vector::TwoNorm.
Referenced by perturbXVec().
|
protectedvirtual |
Perturb parameter param_id in the group's parameter vector, and return perturbation size.
References epsScalar(), LOCA::MultiContinuation::AbstractGroup::getParam(), and LOCA::MultiContinuation::AbstractGroup::setParam().
Referenced by computeDCeDp(), computeDfDp(), computeDJnDp(), computeDwtCeDp(), computeDwtJDp(), and computeDwtJnDp().
|
protectedvirtual |
Perturb group's solution vector in direction of aVector, and return perturbation size.
References NOX::Abstract::Vector::clone(), NOX::DeepCopy, epsVector(), and NOX::Abstract::Group::setX().
Referenced by computeDCeDxa(), computeDJnDxa(), computeDwtCeDx(), computeDwtJnDx(), and computeDwtJnDx().
|
protected |
Global data.
Referenced by computeDCeDp(), computeDCeDxa(), computeDCeDxa(), computeDfDp(), computeDJnDp(), computeDJnDxa(), computeDJnDxa(), computeDwtCeDp(), computeDwtCeDx(), computeDwtJDp(), computeDwtJnDp(), computeDwtJnDx(), computeDwtJnDx(), DerivUtils(), and DerivUtils().
|
protected |
Relative perturbation size using in differencing calculations.
Referenced by DerivUtils(), DerivUtils(), epsScalar(), and epsVector().