CppADCodeGen  HEAD
A C++ Algorithmic Differentiation Package with Source Code Generation
CppAD::cg::GenericModel< Base > Class Template Referenceabstract
Inheritance diagram for CppAD::cg::GenericModel< Base >:
Inheritance graph
Collaboration diagram for CppAD::cg::GenericModel< Base >:
Collaboration graph

Public Member Functions

 GenericModel (GenericModel &&other) noexcept
 
virtual const std::string & getName () const =0
 
virtual bool isJacobianSparsityAvailable ()=0
 
virtual std::vector< std::set< size_t > > JacobianSparsitySet ()=0
 
virtual std::vector< bool > JacobianSparsityBool ()=0
 
virtual void JacobianSparsity (std::vector< size_t > &equations, std::vector< size_t > &variables)=0
 
virtual bool isHessianSparsityAvailable ()=0
 
virtual std::vector< std::set< size_t > > HessianSparsitySet ()=0
 
virtual std::vector< bool > HessianSparsityBool ()=0
 
virtual void HessianSparsity (std::vector< size_t > &rows, std::vector< size_t > &cols)=0
 
virtual bool isEquationHessianSparsityAvailable ()=0
 
virtual std::vector< std::set< size_t > > HessianSparsitySet (size_t i)=0
 
virtual std::vector< bool > HessianSparsityBool (size_t i)=0
 
virtual void HessianSparsity (size_t i, std::vector< size_t > &rows, std::vector< size_t > &cols)=0
 
virtual size_t Domain () const =0
 
virtual size_t Range () const =0
 
virtual const std::vector< std::string > & getAtomicFunctionNames ()=0
 
virtual bool addAtomicFunction (atomic_base< Base > &atomic)=0
 
virtual bool addExternalModel (GenericModel< Base > &atomic)=0
 
void setAtomicEvalForwardOne4CppAD (bool evalForwardOne4CppAD)
 
bool isAtomicEvalForwardOne4CppAD () const
 
virtual bool isForwardZeroAvailable ()=0
 
template<typename VectorBase >
VectorBase ForwardZero (const VectorBase &x)
 
virtual void ForwardZero (const CppAD::vector< bool > &vx, CppAD::vector< bool > &vy, ArrayView< const Base > tx, ArrayView< Base > ty)=0
 
template<typename VectorBase >
void ForwardZero (const VectorBase &x, VectorBase &dep)
 
virtual void ForwardZero (ArrayView< const Base > x, ArrayView< Base > dep)=0
 
virtual void ForwardZero (const std::vector< const Base *> &x, ArrayView< Base > dep)=0
 
virtual bool isJacobianAvailable ()=0
 
template<typename VectorBase >
VectorBase Jacobian (const VectorBase &x)
 
template<typename VectorBase >
void Jacobian (const VectorBase &x, VectorBase &jac)
 
virtual void Jacobian (ArrayView< const Base > x, ArrayView< Base > jac)=0
 
virtual bool isHessianAvailable ()=0
 
template<typename VectorBase >
VectorBase Hessian (const VectorBase &x, const VectorBase &w)
 
template<typename VectorBase >
void Hessian (const VectorBase &x, const VectorBase &w, VectorBase &hess)
 
template<typename VectorBase >
VectorBase Hessian (const VectorBase &x, size_t i)
 
virtual void Hessian (ArrayView< const Base > x, ArrayView< const Base > w, ArrayView< Base > hess)=0
 
virtual bool isForwardOneAvailable ()=0
 
template<typename VectorBase >
VectorBase ForwardOne (const VectorBase &tx)
 
virtual void ForwardOne (ArrayView< const Base > tx, ArrayView< Base > ty)=0
 
virtual bool isSparseForwardOneAvailable ()=0
 
virtual void ForwardOne (ArrayView< const Base > x, size_t tx1Nnz, const size_t idx[], const Base tx1[], ArrayView< Base > ty1)=0
 
virtual bool isReverseOneAvailable ()=0
 
template<typename VectorBase >
VectorBase ReverseOne (const VectorBase &tx, const VectorBase &ty, const VectorBase &py)
 
template<typename VectorBase >
void ReverseOne (const VectorBase &tx, const VectorBase &ty, VectorBase &px, const VectorBase &py)
 
virtual bool isSparseReverseOneAvailable ()=0
 
virtual void ReverseOne (ArrayView< const Base > tx, ArrayView< const Base > ty, ArrayView< Base > px, ArrayView< const Base > py)=0
 
virtual void ReverseOne (ArrayView< const Base > x, ArrayView< Base > px, size_t pyNnz, const size_t idx[], const Base py[])=0
 
virtual bool isReverseTwoAvailable ()=0
 
template<typename VectorBase >
VectorBase ReverseTwo (const VectorBase &tx, const VectorBase &ty, const VectorBase &py)
 
template<typename VectorBase >
void ReverseTwo (const VectorBase &tx, const VectorBase &ty, VectorBase &px, const VectorBase &py)
 
virtual bool isSparseReverseTwoAvailable ()=0
 
virtual void ReverseTwo (ArrayView< const Base > tx, ArrayView< const Base > ty, ArrayView< Base > px, ArrayView< const Base > py)=0
 
virtual void ReverseTwo (ArrayView< const Base > x, size_t tx1Nnz, const size_t idx[], const Base tx1[], ArrayView< Base > px2, ArrayView< const Base > py2)=0
 
virtual bool isSparseJacobianAvailable ()=0
 
template<typename VectorBase >
VectorBase SparseJacobian (const VectorBase &x)
 
template<typename VectorBase >
void SparseJacobian (const VectorBase &x, VectorBase &jac)
 
virtual void SparseJacobian (ArrayView< const Base > x, ArrayView< Base > jac)=0
 
virtual void SparseJacobian (const std::vector< Base > &x, std::vector< Base > &jac, std::vector< size_t > &row, std::vector< size_t > &col)=0
 
virtual void SparseJacobian (ArrayView< const Base > x, ArrayView< Base > jac, size_t const **row, size_t const **col)=0
 
virtual void SparseJacobian (const std::vector< const Base *> &x, ArrayView< Base > jac, size_t const **row, size_t const **col)=0
 
virtual bool isSparseHessianAvailable ()=0
 
template<typename VectorBase >
VectorBase SparseHessian (const VectorBase &x, const VectorBase &w)
 
template<typename VectorBase >
void SparseHessian (const VectorBase &x, const VectorBase &w, VectorBase &hess)
 
virtual void SparseHessian (ArrayView< const Base > x, ArrayView< const Base > w, ArrayView< Base > hess)=0
 
virtual void SparseHessian (const std::vector< Base > &x, const std::vector< Base > &w, std::vector< Base > &hess, std::vector< size_t > &row, std::vector< size_t > &col)=0
 
virtual void SparseHessian (ArrayView< const Base > x, ArrayView< const Base > w, ArrayView< Base > hess, size_t const **row, size_t const **col)=0
 
virtual void SparseHessian (const std::vector< const Base *> &x, ArrayView< const Base > w, ArrayView< Base > hess, size_t const **row, size_t const **col)=0
 
virtual CGAtomicGenericModel< Base > & asAtomic ()
 

Protected Attributes

CGAtomicGenericModel< Base > * _atomic
 
bool _evalAtomicForwardOne4CppAD
 

Detailed Description

template<class Base>
class CppAD::cg::GenericModel< Base >

Abstract class used to execute a generated model

Author
Joao Leal

Definition at line 141 of file declare_cg.hpp.

Member Function Documentation

◆ addAtomicFunction()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::addAtomicFunction ( atomic_base< Base > &  atomic)
pure virtual

Defines a CppAD atomic function to be used as an external function by the compiled code. It should match an external function name previously provided to create the source.

Parameters
atomicThe atomic function. This object must only be deleted after the model.
Returns
true if the atomic function is required by the model, false if it will never be used.

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ addExternalModel()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::addExternalModel ( GenericModel< Base > &  atomic)
pure virtual

Defines a generic model to be used as an external function by the compiled code. It should match an external function name previously provided to create the source. This form should be preferred over ::addAtomicFunction whenever possible.

Parameters
atomicThe generic model. This object must only be deleted after the model.
Returns
true if the external function is required by the model, false if it will never be used.

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ asAtomic()

template<class Base>
virtual CGAtomicGenericModel<Base>& CppAD::cg::GenericModel< Base >::asAtomic ( )
inlinevirtual

Provides a wrapper for this compiled model allowing it to be used as an atomic function. The model must not be deleted while the atomic function is in use.

Returns
an atomic function wrapper for this model

Definition at line 889 of file generic_model.hpp.

◆ Domain()

◆ ForwardOne() [1/3]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::ForwardOne ( const VectorBase &  tx)
inline

Computes results during a forward mode sweep. Computes the first-order Taylor coefficients for dependent variables relative to a single independent variable. This method can be used during the evaluation of the jacobian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic forward mode function!
Parameters
txThe Taylor coefficients of the independent variables
Returns
The Taylor coefficients of the dependent variables

Definition at line 429 of file generic_model.hpp.

Referenced by CppAD::cg::CGAtomicGenericModel< Base >::CGAtomicGenericModel(), and CppAD::cg::GenericModelExternalFunctionWrapper< Base >::forward().

◆ ForwardOne() [2/3]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ForwardOne ( ArrayView< const Base >  tx,
ArrayView< Base >  ty 
)
pure virtual

Computes results during a forward mode sweep. Computes the first-order Taylor coefficients for dependent variables relative to a single independent variable. This method can be used during the evaluation of the jacobian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic forward mode function!
Parameters
txThe Taylor coefficients of the independent variables
tyThe Taylor coefficients of the dependent variables

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ForwardOne() [3/3]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ForwardOne ( ArrayView< const Base >  x,
size_t  tx1Nnz,
const size_t  idx[],
const Base  tx1[],
ArrayView< Base >  ty1 
)
pure virtual

Computes results during a first-order forward mode sweep, the first-order Taylor coefficients for dependent variables relative to a single independent variable. This method can be used during the evaluation of the jacobian when the model is used through a user defined external/atomic AD function. This method version avoids some data copies and can be more efficient.

Warning
do not used it as a generic forward mode function!
Parameters
xindependent variable vector
tx1Nnzthe number of non-zeros of the directional derivatives of the independent variables (seed directions)
idxthe locations of the non-zero values the partial derivatives of the dependent variables (seeds)
tx1the non-zero values of the partial derivatives of the dependent variables (seeds)
ty1

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ForwardZero() [1/5]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::ForwardZero ( const VectorBase &  x)
inline

Evaluates the dependent model variables (zero-order). This method considers that the generic model was prepared with a single array for the independent variables (the default behavior).

Parameters
xThe independent variable vector
Returns
The dependent variable vector

Definition at line 212 of file generic_model.hpp.

Referenced by CppAD::cg::CGAtomicGenericModel< Base >::CGAtomicGenericModel(), CppAD::cg::GenericModelExternalFunctionWrapper< Base >::forward(), and CppAD::cg::GenericModel< Base >::ForwardZero().

◆ ForwardZero() [2/5]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ForwardZero ( const CppAD::vector< bool > &  vx,
CppAD::vector< bool > &  vy,
ArrayView< const Base >  tx,
ArrayView< Base >  ty 
)
pure virtual

Evaluates the dependent model variables (zero-order). This method considers that the generic model was prepared with a single array for the independent variables (the default behavior).

Parameters
vxIf it is not empty then it provides which independent variables are considered as variables (not parameters)
vyIf vx and vy are not empty, it identifies which elements of ty are variables
txThe independent variable vector
tyThe dependent variable vector

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ForwardZero() [3/5]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::ForwardZero ( const VectorBase &  x,
VectorBase &  dep 
)
inline

Evaluates the dependent model variables (zero-order). This method considers that the generic model was prepared using a single array for the independent variables (the default behavior).

Parameters
xThe independent variable vector
depThe dependent variable vector

Definition at line 245 of file generic_model.hpp.

◆ ForwardZero() [4/5]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ForwardZero ( ArrayView< const Base >  x,
ArrayView< Base >  dep 
)
pure virtual

Evaluates the dependent model variables (zero-order). This method considers that the generic model was prepared using a single array for the independent variables (the default behavior).

Parameters
xThe independent variable vector
depThe dependent variable vector

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ForwardZero() [5/5]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ForwardZero ( const std::vector< const Base *> &  x,
ArrayView< Base >  dep 
)
pure virtual

Determines the dependent variable values using a variable number of independent variable arrays. This method can be useful if the generic model was prepared considering that the independent variables are provided by several arrays.

Parameters
xContains the several independent variable vectors
depThe values of the dependent variables

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ getAtomicFunctionNames()

template<class Base>
virtual const std::vector<std::string>& CppAD::cg::GenericModel< Base >::getAtomicFunctionNames ( )
pure virtual

The names of the atomic functions required by this model. All external/atomic functions must be provided before using this model to compute numerical values.

Returns
the names of the atomic functions used by this model

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ getName()

template<class Base>
virtual const std::string& CppAD::cg::GenericModel< Base >::getName ( ) const
pure virtual

Provides the name for this model.

Returns
The model name

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::FunctorGenericModel< Base >::addExternalModel().

◆ Hessian() [1/4]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::Hessian ( const VectorBase &  x,
const VectorBase &  w 
)
inline

Determines the dense weighted sum of the Hessians using dense methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
Returns
The values of the dense hessian

Definition at line 347 of file generic_model.hpp.

Referenced by CppAD::cg::GenericModel< Base >::Hessian().

◆ Hessian() [2/4]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::Hessian ( const VectorBase &  x,
const VectorBase &  w,
VectorBase &  hess 
)
inline

Determines the dense weighted sum of the Hessians using dense methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the dense hessian

Definition at line 366 of file generic_model.hpp.

◆ Hessian() [3/4]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::Hessian ( const VectorBase &  x,
size_t  i 
)
inline

Determines the dense Hessian for a given dependent variable using dense methods.

\[ hess = \frac{{\rm d^2} F_i }{{\rm d} x^2 } (x) \]

Parameters
xThe independent variables
iThe index of the function/dependent variable
Returns
The values of the dense hessian for the function/dependent variable i

Definition at line 384 of file generic_model.hpp.

◆ Hessian() [4/4]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::Hessian ( ArrayView< const Base >  x,
ArrayView< const Base >  w,
ArrayView< Base >  hess 
)
pure virtual

Determines the dense weighted sum of the Hessians using dense methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the dense hessian

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ HessianSparsity()

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::HessianSparsity ( size_t  i,
std::vector< size_t > &  rows,
std::vector< size_t > &  cols 
)
pure virtual

Provides the sparsity of the hessian for a dependent variable.

Parameters
iThe index of the dependent variable
rowsThe sparsity pattern row indices.
colsThe sparsity pattern column indices.

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ HessianSparsityBool()

template<class Base>
virtual std::vector<bool> CppAD::cg::GenericModel< Base >::HessianSparsityBool ( size_t  i)
pure virtual

Provides the sparsity of the hessian for a dependent variable.

Parameters
iThe index of the dependent variable
Returns
The sparsity

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ HessianSparsitySet() [1/2]

template<class Base>
virtual std::vector<std::set<size_t> > CppAD::cg::GenericModel< Base >::HessianSparsitySet ( )
pure virtual

Provides the sparsity of the sum of the hessian for each dependent variable.

Returns
The sparsity

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::CGAtomicGenericModel< Base >::rev_sparse_hes().

◆ HessianSparsitySet() [2/2]

template<class Base>
virtual std::vector<std::set<size_t> > CppAD::cg::GenericModel< Base >::HessianSparsitySet ( size_t  i)
pure virtual

Provides the sparsity of the hessian for a dependent variable.

Parameters
iThe index of the dependent variable
Returns
The sparsity

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ isEquationHessianSparsityAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isEquationHessianSparsityAvailable ( )
pure virtual

Determines whether or not the sparsity pattern for the Hessian associated with a dependent variable can be requested.

Returns
true if it is possible to request the parsity pattern for the Hessians

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ isForwardOneAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isForwardOneAvailable ( )
pure virtual

Determines whether or not the first-order forward mode dense methods can be called.

Returns
true if it is possible to evaluate the first-order forward mode using the dense vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::Hessian().

◆ isForwardZeroAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isForwardZeroAvailable ( )
pure virtual

Determines whether or not the model evaluation (zero-order forward mode) can be requested.

Returns
true if it is possible to evaluate the model

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::setAtomicEvalForwardOne4CppAD().

◆ isHessianAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isHessianAvailable ( )
pure virtual

Determines whether or not the dense evaluation of the weighted sum of the Hessians can be requested.

Returns
true if it is possible to evaluate the dense weighted sum of the Hessians

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::Jacobian().

◆ isHessianSparsityAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isHessianSparsityAvailable ( )
pure virtual

Determines whether or not the sparsity pattern for the weighted sum of the Hessians can be requested.

Returns
true if it is possible to request the parsity pattern for the weighted sum of the Hessians

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ isJacobianAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isJacobianAvailable ( )
pure virtual

Determines whether or not the dense Jacobian evaluation can be requested.

Returns
true if it is possible to evaluate the dense Jacobian

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ForwardZero().

◆ isJacobianSparsityAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isJacobianSparsityAvailable ( )
pure virtual

Determines whether or not the Jacobian sparsity pattern can be requested.

Returns
true if it is possible to request the Jacobian sparsity pattern

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ isReverseOneAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isReverseOneAvailable ( )
pure virtual

Determines whether or not the first-order reverse mode dense methods can be called.

Returns
true if it is possible to evaluate the first-order reverse mode using the dense vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ForwardOne().

◆ isReverseTwoAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isReverseTwoAvailable ( )
pure virtual

Determines whether or not the second-order reverse mode dense methods can be called.

Returns
true if it is possible to evaluate the second-order reverse mode using the dense vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ReverseOne().

◆ isSparseForwardOneAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isSparseForwardOneAvailable ( )
pure virtual

Determines whether or not the first-order forward mode sparse method can be called.

Returns
true if it is possible to evaluate the first-order forward mode using the sparse vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ForwardOne().

◆ isSparseHessianAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isSparseHessianAvailable ( )
pure virtual

Determines whether or not the sparse evaluation of the weighted sum of the Hessians methods can be called.

Returns
true if it is possible to evaluate the sparse weighted sum of the Hessians

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::SparseJacobian().

◆ isSparseJacobianAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isSparseJacobianAvailable ( )
pure virtual

Determines whether or not the sparse Jacobian evaluation methods can be called.

Returns
true if it is possible to evaluate the sparse Jacobian

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ReverseTwo().

◆ isSparseReverseOneAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isSparseReverseOneAvailable ( )
pure virtual

Determines whether or not the first-order reverse mode sparse method can be called.

Returns
true if it is possible to evaluate the first-order reverse mode using the sparse vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ReverseOne().

◆ isSparseReverseTwoAvailable()

template<class Base>
virtual bool CppAD::cg::GenericModel< Base >::isSparseReverseTwoAvailable ( )
pure virtual

Determines whether or not the second-order reverse mode sparse methods can be called.

Returns
true if it is possible to evaluate the second-order reverse mode using the sparse vector format

Implemented in CppAD::cg::FunctorGenericModel< Base >.

Referenced by CppAD::cg::GenericModel< Base >::ReverseTwo().

◆ Jacobian() [1/3]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::Jacobian ( const VectorBase &  x)
inline

Calculates a Jacobian using dense methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable vector
Returns
jac a dense Jacobian

Definition at line 293 of file generic_model.hpp.

Referenced by CppAD::cg::GenericModel< Base >::Jacobian().

◆ Jacobian() [2/3]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::Jacobian ( const VectorBase &  x,
VectorBase &  jac 
)
inline

Calculates a Jacobian using dense methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable vector
jaca dense Jacobian

Definition at line 310 of file generic_model.hpp.

◆ Jacobian() [3/3]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::Jacobian ( ArrayView< const Base >  x,
ArrayView< Base >  jac 
)
pure virtual

Calculates a Jacobian using dense methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable vector
jaca dense Jacobian

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ Range()

◆ ReverseOne() [1/4]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::ReverseOne ( const VectorBase &  tx,
const VectorBase &  ty,
const VectorBase &  py 
)
inline

Computes results during a reverse mode sweep (adjoints or partial derivatives of independent variables) for the evaluation of the jacobian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!

Definition at line 511 of file generic_model.hpp.

Referenced by CppAD::cg::CGAtomicGenericModel< Base >::CGAtomicGenericModel(), CppAD::cg::GenericModelExternalFunctionWrapper< Base >::reverse(), and CppAD::cg::GenericModel< Base >::ReverseOne().

◆ ReverseOne() [2/4]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::ReverseOne ( const VectorBase &  tx,
const VectorBase &  ty,
VectorBase &  px,
const VectorBase &  py 
)
inline

Computes results during a reverse mode sweep (adjoints or partial derivatives of independent variables) for the evaluation of the jacobian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!

Definition at line 528 of file generic_model.hpp.

◆ ReverseOne() [3/4]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ReverseOne ( ArrayView< const Base >  tx,
ArrayView< const Base >  ty,
ArrayView< Base >  px,
ArrayView< const Base >  py 
)
pure virtual

Computes results during a reverse mode sweep (adjoints or partial derivatives of independent variables) for the evaluation of the jacobian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ReverseOne() [4/4]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ReverseOne ( ArrayView< const Base >  x,
ArrayView< Base >  px,
size_t  pyNnz,
const size_t  idx[],
const Base  py[] 
)
pure virtual

Computes results during a reverse mode sweep (adjoints or partial derivatives of independent variables) for the evaluation of the jacobian when the model is used through a user defined external/atomic AD function. This method version avoids some data copies and can be more efficient.

Warning
do not used it as a generic reverse mode function!
Parameters
xindependent variable vector
pxpartial derivatives of the independent variables (same size as x)
pyNnzthe number of non-zeros of the partial derivatives of the dependent variables (weight functionals)
idxthe locations of the non-zero values the partial derivatives of the dependent variables (weight functionals)
pythe non-zero values of the partial derivatives of the dependent variables (weight functionals)

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ReverseTwo() [1/4]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::ReverseTwo ( const VectorBase &  tx,
const VectorBase &  ty,
const VectorBase &  py 
)
inline

Computes second-order results during a reverse mode sweep (p = 2). This method can be used during the evaluation of the hessian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!
only the values for px[j * (k+1)] are defined, since px[j * (k+1) + 1] is not used during the hessian evaluation.

Definition at line 602 of file generic_model.hpp.

Referenced by CppAD::cg::CGAtomicGenericModel< Base >::CGAtomicGenericModel(), CppAD::cg::GenericModelExternalFunctionWrapper< Base >::reverse(), and CppAD::cg::GenericModel< Base >::ReverseTwo().

◆ ReverseTwo() [2/4]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::ReverseTwo ( const VectorBase &  tx,
const VectorBase &  ty,
VectorBase &  px,
const VectorBase &  py 
)
inline

Computes second-order results during a reverse mode sweep (p = 2). This method can be used during the evaluation of the hessian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!
only the values for px[j * (k+1)] are defined, since px[j * (k+1) + 1] is not used during the hessian evaluation.

Definition at line 620 of file generic_model.hpp.

◆ ReverseTwo() [3/4]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ReverseTwo ( ArrayView< const Base >  tx,
ArrayView< const Base >  ty,
ArrayView< Base >  px,
ArrayView< const Base >  py 
)
pure virtual

Computes second-order results during a reverse mode sweep (p = 2). This method can be used during the evaluation of the hessian when the model is used through a user defined external/atomic AD function.

Warning
do not used it as a generic reverse mode function!
only the values for px[j * (k+1)] are defined, since px[j * (k+1) + 1] is not used during the hessian evaluation.

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ ReverseTwo() [4/4]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::ReverseTwo ( ArrayView< const Base >  x,
size_t  tx1Nnz,
const size_t  idx[],
const Base  tx1[],
ArrayView< Base >  px2,
ArrayView< const Base >  py2 
)
pure virtual

Computes second-order results during a reverse mode sweep (p = 2). This method can be used during the evaluation of the hessian when the model is used through a user defined external AD function. This method version avoids some data copies and can be more efficient.

Warning
do not used it as a generic reverse mode function!
Parameters
xindependent variable vector
tx1Nnzthe number of non-zeros of the first-order Taylor coefficients of the independents
idxthe locations of the non-zero values of the first-order Taylor coefficients of the independents
tx1the values of the non-zero first-order Taylor coefficients of the independents
px2second-order partials of the independents (should have the same size of x)
py2second-order partials of the dependents (should have the size of the dependent variables)

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ setAtomicEvalForwardOne4CppAD()

template<class Base>
void CppAD::cg::GenericModel< Base >::setAtomicEvalForwardOne4CppAD ( bool  evalForwardOne4CppAD)
inline

Defines whether or not to evaluate a forward mode of an atomic functions during a reverse sweep so that CppAD checks validate OK. If this model is not used within CppAD then it should be set to false.

Parameters
evalForwardOne4CppADtrue to perform the forward mode, false to ignore it

Definition at line 182 of file generic_model.hpp.

◆ SparseHessian() [1/6]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::SparseHessian ( const VectorBase &  x,
const VectorBase &  w 
)
inline

Determines the dense weighted sum of the Hessians using sparse methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
Returns
The values of the dense Hessian

Definition at line 795 of file generic_model.hpp.

Referenced by CppAD::cg::GenericModel< Base >::SparseHessian().

◆ SparseHessian() [2/6]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::SparseHessian ( const VectorBase &  x,
const VectorBase &  w,
VectorBase &  hess 
)
inline

Determines the dense weighted sum of the Hessians using sparse methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the dense Hessian

Definition at line 814 of file generic_model.hpp.

◆ SparseHessian() [3/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseHessian ( ArrayView< const Base >  x,
ArrayView< const Base >  w,
ArrayView< Base >  hess 
)
pure virtual

Determines the dense weighted sum of the Hessians using sparse methods.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the dense Hessian

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseHessian() [4/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseHessian ( const std::vector< Base > &  x,
const std::vector< Base > &  w,
std::vector< Base > &  hess,
std::vector< size_t > &  row,
std::vector< size_t > &  col 
)
pure virtual

Determines the sparse weighted sum of the Hessians using a variable number of independent variable arrays.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the sparse hessian in the order provided by row and col
rowThe row indices of the hessian values
colThe column indices of the hessian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseHessian() [5/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseHessian ( ArrayView< const Base >  x,
ArrayView< const Base >  w,
ArrayView< Base >  hess,
size_t const **  row,
size_t const **  col 
)
pure virtual

Determines the sparse weighted sum of the Hessians using a variable number of independent variable arrays.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

Parameters
xThe independent variables
wThe equation multipliers
hessThe values of the sparse hessian in the order provided by row and col
rowThe row indices of the hessian values
colThe column indices of the hessian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseHessian() [6/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseHessian ( const std::vector< const Base *> &  x,
ArrayView< const Base >  w,
ArrayView< Base >  hess,
size_t const **  row,
size_t const **  col 
)
pure virtual

Determines the sparse weighted sum of the Hessians using a variable number of independent variable arrays.

\[ hess = \frac{\rm d^2 }{{\rm d} x^2 } \sum_{i} w_i F_i (x) \]

\[ i = 0 , \ldots , m - 1 \]

This method can be useful if the generic model was prepared considering that the independent variables are provided by several arrays.

Parameters
xContains the several independent variable vectors
wThe equation multipliers
w_sizeThe number of equations
hessThe values of the sparse hessian in the order provided by row and col
rowThe row indices of the hessian values
colThe column indices of the hessian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseJacobian() [1/6]

template<class Base>
template<typename VectorBase >
VectorBase CppAD::cg::GenericModel< Base >::SparseJacobian ( const VectorBase &  x)
inline

Calculates a Jacobian using sparse methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable vector
Returns
a dense Jacobian

Definition at line 697 of file generic_model.hpp.

Referenced by CppAD::cg::GenericModel< Base >::SparseJacobian().

◆ SparseJacobian() [2/6]

template<class Base>
template<typename VectorBase >
void CppAD::cg::GenericModel< Base >::SparseJacobian ( const VectorBase &  x,
VectorBase &  jac 
)
inline

Calculates a Jacobian using sparse methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable vector
jaca vector where the dense Jacobian will be placed

Definition at line 714 of file generic_model.hpp.

◆ SparseJacobian() [3/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseJacobian ( ArrayView< const Base >  x,
ArrayView< Base >  jac 
)
pure virtual

Calculates a Jacobian using sparse methods and saves it into a dense format:

\[ jac[ i n + j ] = \frac{\partial F_i( x ) }{\partial x_j } \]

\( i = 0 , \ldots , m - 1 \) and \(j = 0 , \ldots , n - 1 \).

Parameters
xindependent variable array (must have n elements)
jacan array where the dense Jacobian will be placed (must be allocated with at least m * n elements)

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseJacobian() [4/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseJacobian ( const std::vector< Base > &  x,
std::vector< Base > &  jac,
std::vector< size_t > &  row,
std::vector< size_t > &  col 
)
pure virtual

Calculates a Jacobian using sparse methods and saves it into a sparse format.

Parameters
xindependent variable array (must have n elements)
jacThe values of the sparse Jacobian in the order provided by row and col (must be allocated with at least the same number of non-zero elements as the Jacobian)
rowThe row indices of the Jacobian values
colThe column indices of the Jacobian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseJacobian() [5/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseJacobian ( ArrayView< const Base >  x,
ArrayView< Base >  jac,
size_t const **  row,
size_t const **  col 
)
pure virtual

Calculates a Jacobian using sparse methods and saves it into a sparse format.

Parameters
xindependent variable array (must have n elements)
jacThe values of the sparse Jacobian in the order provided by row and col (must be allocated with at least the same number of non-zero elements as the Jacobian)
rowThe row indices of the Jacobian values
colThe column indices of the Jacobian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.

◆ SparseJacobian() [6/6]

template<class Base>
virtual void CppAD::cg::GenericModel< Base >::SparseJacobian ( const std::vector< const Base *> &  x,
ArrayView< Base >  jac,
size_t const **  row,
size_t const **  col 
)
pure virtual

Determines the sparse Jacobian using a variable number of independent variable arrays. This method can be useful if the generic model was prepared considering that the independent variables are provided by several arrays.

Parameters
xContains the several independent variable vectors
jacThe values of the sparse Jacobian in the order provided by row and col
rowThe row indices of the Jacobian values
colThe column indices of the Jacobian values

Implemented in CppAD::cg::FunctorGenericModel< Base >.


The documentation for this class was generated from the following files: