Thyra Package Browser (Single Doxygen Collection) Version of the Day
Private Attributes | Static Private Attributes | Related Functions
Thyra::DirectionalFiniteDiffCalculator< Scalar > Class Template Reference

Utility calss for computing directional finite differences of a model. More...

#include <Thyra_DirectionalFiniteDiffCalculator_decl.hpp>

Inheritance diagram for Thyra::DirectionalFiniteDiffCalculator< Scalar >:
Inheritance graph
[legend]

List of all members.

Private Attributes

RCP< ParameterListparamList_

Static Private Attributes

static const std::string FDMethod_name = "FD Method"
static const RCP
< Teuchos::StringToIntegralParameterEntryValidator
< EFDMethodType > > 
fdMethodValidator
static const std::string FDMethod_default = "order-one"
static const std::string FDStepSelectType_name = "FD Step Select Type"
static const RCP
< Teuchos::StringToIntegralParameterEntryValidator
< EFDStepSelectType > > 
fdStepSelectTypeValidator
static const std::string FDStepSelectType_default = "Absolute"
static const std::string FDStepLength_name = "FD Step Length"
static const double FDStepLength_default = -1.0

Related Functions

(Note that these are not member functions.)

template<class Scalar >
RCP
< DirectionalFiniteDiffCalculator
< Scalar > > 
directionalFiniteDiffCalculator (const RCP< ParameterList > &paramList)
 Nonmember constructor.

Public Types

typedef ScalarTraits< Scalar > ST
 
typedef ST::magnitudeType ScalarMag
 
typedef ScalarTraits< ScalarMagSMT
 
typedef
DirectionalFiniteDiffCalculatorTypes::EFDMethodType 
EFDMethodType
 
typedef
DirectionalFiniteDiffCalculatorTypes::EFDStepSelectType 
EFDStepSelectType
 
typedef
DirectionalFiniteDiffCalculatorTypes::SelectedDerivatives 
SelectedDerivatives
 

Constructors/setup

 STANDARD_MEMBER_COMPOSITION_MEMBERS (EFDMethodType, fd_method_type)
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (EFDStepSelectType, fd_step_select_type)
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, fd_step_size)
 Pick the size of the finite difference step.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, fd_step_size_min)
 Pick the minimum step size under which the finite difference product will not be computed.
 DirectionalFiniteDiffCalculator (EFDMethodType fd_method_type=DirectionalFiniteDiffCalculatorTypes::FD_ORDER_FOUR_AUTO, EFDStepSelectType fd_step_select_type=DirectionalFiniteDiffCalculatorTypes::FD_STEP_ABSOLUTE, ScalarMag fd_step_size=-1.0, ScalarMag fd_step_size_min=-1.0)
 

Overridden from ParameterListAcceptor

void setParameterList (RCP< ParameterList > const &paramList)
 
RCP< ParameterListgetNonconstParameterList ()
 
RCP< ParameterListunsetParameterList ()
 
RCP< const ParameterListgetParameterList () const
 
RCP< const ParameterListgetValidParameters () const
 

Finite difference functions.

ModelEvaluatorBase::OutArgs
< Scalar > 
createOutArgs (const ModelEvaluator< Scalar > &model, const SelectedDerivatives &fdDerivatives)
 Create an augmented out args object for holding finite difference objects.
void calcVariations (const ModelEvaluator< Scalar > &model, const ModelEvaluatorBase::InArgs< Scalar > &basePoint, const ModelEvaluatorBase::InArgs< Scalar > &directions, const ModelEvaluatorBase::OutArgs< Scalar > &baseFunctionValues, const ModelEvaluatorBase::OutArgs< Scalar > &variations) const
 Compute variations using directional finite differences..
void calcDerivatives (const ModelEvaluator< Scalar > &model, const ModelEvaluatorBase::InArgs< Scalar > &basePoint, const ModelEvaluatorBase::OutArgs< Scalar > &baseFunctionValues, const ModelEvaluatorBase::OutArgs< Scalar > &derivatives) const
 Compute entire derivative objects using finite differences.

Detailed Description

template<class Scalar>
class Thyra::DirectionalFiniteDiffCalculator< Scalar >

Utility calss for computing directional finite differences of a model.

This class computes finite difference approximations to the variations:

The client can leave any of the delta_x or delta_p(l) directions as NULL and they will be assumed to be zero.

Warning!</b The client should only set parameters using either the parameter list function setParameterList() or the more typesafe functions but not a mixture of the two. The behavior of setting options in two different ways is undefined and is likely to change.

ToDo: Finish documentaton!

Definition at line 117 of file Thyra_DirectionalFiniteDiffCalculator_decl.hpp.


Member Typedef Documentation

template<class Scalar >
typedef ScalarTraits<Scalar> Thyra::DirectionalFiniteDiffCalculator< Scalar >::ST
template<class Scalar >
typedef ST::magnitudeType Thyra::DirectionalFiniteDiffCalculator< Scalar >::ScalarMag
template<class Scalar >
typedef ScalarTraits<ScalarMag> Thyra::DirectionalFiniteDiffCalculator< Scalar >::SMT

Constructor & Destructor Documentation

template<class Scalar >
Thyra::DirectionalFiniteDiffCalculator< Scalar >::DirectionalFiniteDiffCalculator ( EFDMethodType  fd_method_type = DirectionalFiniteDiffCalculatorTypes::FD_ORDER_FOUR_AUTO,
EFDStepSelectType  fd_step_select_type = DirectionalFiniteDiffCalculatorTypes::FD_STEP_ABSOLUTE,
ScalarMag  fd_step_size = -1.0,
ScalarMag  fd_step_size_min = -1.0 
)

Member Function Documentation

template<class Scalar >
Thyra::DirectionalFiniteDiffCalculator< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( EFDMethodType  ,
fd_method_type   
)

template<class Scalar >
Thyra::DirectionalFiniteDiffCalculator< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( EFDStepSelectType  ,
fd_step_select_type   
)

template<class Scalar >
Thyra::DirectionalFiniteDiffCalculator< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
fd_step_size   
)

Pick the size of the finite difference step.

If fd_step_size < 0 then the implementation will try to select it based on the order of method fd_method_type() that is selected.

template<class Scalar >
Thyra::DirectionalFiniteDiffCalculator< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
fd_step_size_min   
)

Pick the minimum step size under which the finite difference product will not be computed.

If fd_step_size_min == 0 then the finite difference computation will always be performed. If fd_step_size_min < 0 then the minimum step size will be determined internally.

template<class Scalar >
void Thyra::DirectionalFiniteDiffCalculator< Scalar >::setParameterList ( RCP< ParameterList > const &  paramList) [virtual]
template<class Scalar >
RCP< ParameterList > Thyra::DirectionalFiniteDiffCalculator< Scalar >::getNonconstParameterList ( ) [virtual]
template<class Scalar >
RCP< ParameterList > Thyra::DirectionalFiniteDiffCalculator< Scalar >::unsetParameterList ( ) [virtual]
template<class Scalar >
RCP< const ParameterList > Thyra::DirectionalFiniteDiffCalculator< Scalar >::getParameterList ( ) const [virtual]

Reimplemented from Teuchos::ParameterListAcceptor.

Definition at line 299 of file Thyra_DirectionalFiniteDiffCalculator_def.hpp.

template<class Scalar >
RCP< const ParameterList > Thyra::DirectionalFiniteDiffCalculator< Scalar >::getValidParameters ( ) const [virtual]
template<class Scalar >
ModelEvaluatorBase::OutArgs< Scalar > Thyra::DirectionalFiniteDiffCalculator< Scalar >::createOutArgs ( const ModelEvaluator< Scalar > &  model,
const SelectedDerivatives fdDerivatives 
)

Create an augmented out args object for holding finite difference objects.

Warning! The returned object must only be used with the below functions calcVariations() and calcDerivatives() and not with the original model object directly.

Definition at line 337 of file Thyra_DirectionalFiniteDiffCalculator_def.hpp.

References Thyra::DirectionalFiniteDiffCalculatorTypes::OutArgsCreator< Scalar >::createOutArgs().

template<class Scalar >
void Thyra::DirectionalFiniteDiffCalculator< Scalar >::calcVariations ( const ModelEvaluator< Scalar > &  model,
const ModelEvaluatorBase::InArgs< Scalar > &  basePoint,
const ModelEvaluatorBase::InArgs< Scalar > &  directions,
const ModelEvaluatorBase::OutArgs< Scalar > &  baseFunctionValues,
const ModelEvaluatorBase::OutArgs< Scalar > &  variations 
) const

Compute variations using directional finite differences..

The computation may fail if a NaN or Inf is encountered during any of the computations in which case a NaNInfException exception will be thrown. Otherwise the computation should be completed successfully.

If the finite difference could not be computed because of cramped bounds then a CrampedBoundsException object will be thrown.

ToDo: Discuss options!

Definition at line 348 of file Thyra_DirectionalFiniteDiffCalculator_def.hpp.

References Teuchos::as(), Thyra::assign(), Thyra::ModelEvaluator< Scalar >::createInArgs(), Thyra::ModelEvaluator< Scalar >::createOutArgs(), Thyra::ModelEvaluator< Scalar >::evalModel(), Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_FOUR, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_FOUR_AUTO, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_FOUR_CENTRAL, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_ONE, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_TWO, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_TWO_AUTO, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_ORDER_TWO_CENTRAL, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_STEP_ABSOLUTE, Thyra::DirectionalFiniteDiffCalculatorTypes::FD_STEP_RELATIVE, Teuchos::RCP< T >::get(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::get_f(), Thyra::ModelEvaluator< Scalar >::get_f_space(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::get_g(), Thyra::ModelEvaluator< Scalar >::get_g_space(), Thyra::ModelEvaluatorBase::InArgs< Scalar >::get_p(), Thyra::ModelEvaluator< Scalar >::get_p_space(), Thyra::ModelEvaluatorBase::InArgs< Scalar >::get_x(), Thyra::ModelEvaluatorBase::InArgs< Scalar >::get_x_dot(), Thyra::ModelEvaluator< Scalar >::get_x_space(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::isEmpty(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::Ng(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::Np(), Thyra::ModelEvaluatorBase::OutArgs< Scalar >::supports(), Thyra::ModelEvaluatorBase::InArgs< Scalar >::supports(), TEST_FOR_EXCEPTION, TEUCHOS_FUNC_TIME_MONITOR, Thyra::V_StVpV(), Teuchos::VERB_LOW, Teuchos::VERB_MEDIUM, and Thyra::Vt_S().

template<class Scalar >
void Thyra::DirectionalFiniteDiffCalculator< Scalar >::calcDerivatives ( const ModelEvaluator< Scalar > &  model,
const ModelEvaluatorBase::InArgs< Scalar > &  basePoint,
const ModelEvaluatorBase::OutArgs< Scalar > &  baseFunctionValues,
const ModelEvaluatorBase::OutArgs< Scalar > &  derivatives 
) const

Friends And Related Function Documentation

template<class Scalar >
RCP< DirectionalFiniteDiffCalculator< Scalar > > directionalFiniteDiffCalculator ( const RCP< ParameterList > &  paramList) [related]

Nonmember constructor.

Definition at line 268 of file Thyra_DirectionalFiniteDiffCalculator_decl.hpp.

References Teuchos::rcp().


Member Data Documentation

template<class Scalar >
RCP<ParameterList> Thyra::DirectionalFiniteDiffCalculator< Scalar >::paramList_ [private]
template<class Scalar >
const std::string Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDMethod_name = "FD Method" [static, private]
template<class Scalar >
const std::string Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDMethod_default = "order-one" [static, private]
template<class Scalar >
const std::string Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDStepSelectType_name = "FD Step Select Type" [static, private]
Initial value:
 Teuchos::rcp(
  new Teuchos::StringToIntegralParameterEntryValidator<Thyra::DirectionalFiniteDiffCalculatorTypes::EFDStepSelectType>(
    Teuchos::tuple<std::string>(
      "Absolute"
      ,"Relative"
      )
    ,Teuchos::tuple<std::string>(
      "Use absolute step size \""+FDStepLength_name+"\""
      ,"Use relative step size \""+FDStepLength_name+"\"*||xo||inf"
      )
    ,Teuchos::tuple<Thyra::DirectionalFiniteDiffCalculatorTypes::EFDStepSelectType>(
      Thyra::DirectionalFiniteDiffCalculatorTypes::FD_STEP_ABSOLUTE
      ,Thyra::DirectionalFiniteDiffCalculatorTypes::FD_STEP_RELATIVE
      )
    ,""
    )
  )

Definition at line 253 of file Thyra_DirectionalFiniteDiffCalculator_decl.hpp.

template<class Scalar >
const std::string Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDStepSelectType_default = "Absolute" [static, private]
template<class Scalar >
const std::string Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDStepLength_name = "FD Step Length" [static, private]
template<class Scalar >
const double Thyra::DirectionalFiniteDiffCalculator< Scalar >::FDStepLength_default = -1.0 [static, private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines