CppADCodeGen
2.4.3
A C++ Algorithmic Differentiation Package with Source Code Generation
|
Public Member Functions | |
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) |
calculate Hessian for one component of f | |
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 |
Abstract class used to execute a generated model
Definition at line 28 of file generic_model.hpp.
|
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.
atomic | The atomic function. This object must only be deleted after the model. |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
atomic | The generic model. This object must only be deleted after the model. |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
Definition at line 755 of file generic_model.hpp.
|
pure virtual |
Provides the number of independent variables.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
Referenced by CppAD::cg::GenericModel< Base >::Hessian(), CppAD::cg::GenericModel< Base >::isHessianAvailable(), CppAD::cg::GenericModel< Base >::isJacobianAvailable(), CppAD::cg::GenericModel< Base >::isSparseHessianAvailable(), CppAD::cg::CGAtomicGenericModel< Base >::rev_sparse_hes(), CppAD::cg::GenericModel< Base >::ReverseOne(), CppAD::cg::GenericModel< Base >::ReverseTwo(), and CppAD::cg::GenericModel< Base >::SparseJacobian().
|
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.
tx | The Taylor coefficients of the independent variables |
ty | The Taylor coefficients of the dependent variables |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
x | independent variable vector |
tx1Nnz | the number of non-zeros of the directional derivatives of the independent variables (seed directions) |
idx | the locations of the non-zero values the partial derivatives of the dependent variables (seeds) |
tx1 | the non-zero values of the partial derivatives of the dependent variables (seeds) |
ty1 |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
tx | The Taylor coefficients of the independent variables |
Definition at line 348 of file generic_model.hpp.
Referenced by CppAD::cg::GenericModelExternalFunctionWrapper< Base >::forward().
|
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.
x | Contains the several independent variable vectors |
dep | The values of the dependent variables |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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).
x | The independent variable vector |
Definition at line 194 of file generic_model.hpp.
Referenced by CppAD::cg::GenericModelExternalFunctionWrapper< Base >::forward(), and CppAD::cg::GenericModel< Base >::ForwardZero().
|
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).
x | The independent variable vector |
dep | The dependent variable vector |
Definition at line 216 of file generic_model.hpp.
|
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.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Provides the name for this model.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
Referenced by CppAD::cg::FunctorGenericModel< Base >::addExternalModel().
|
pure virtual |
Provides the sparsity of the sum of the hessian for each dependent variable.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
Referenced by CppAD::cg::CGAtomicGenericModel< Base >::rev_sparse_hes().
|
pure virtual |
Provides the sparsity of the hessian for a dependent variable
i | The index of the dependent variable |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the sparsity pattern for the Hessian associated with a dependent variable can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the first-order forward mode dense methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the model evaluation (zero-order forward mode) can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the dense evaluation of the weigthed sum of the Hessians can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the sparsity pattern for the weighted sum of the Hessians can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the dense Jacobian evaluation can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the Jacobian sparsity pattern can be requested.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the first-order reverse mode dense methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the second-order reverse mode dense methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the first-order forward mode sparse method can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the sparse evaluation of the weighted sum of the Hessians methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the sparse Jacobian evaluation methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the first-order reverse mode sparse method can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Determines whether or not the second-order reverse mode sparse methods can be called.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Provides the number of dependent variables.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
Referenced by CppAD::cg::GenericModel< Base >::ForwardOne(), CppAD::cg::GenericModel< Base >::ForwardZero(), CppAD::cg::GenericModel< Base >::Hessian(), CppAD::cg::GenericModel< Base >::isJacobianAvailable(), CppAD::cg::CGAtomicGenericModel< Base >::rev_sparse_hes(), and CppAD::cg::GenericModel< Base >::SparseJacobian().
|
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.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
x | independent variable vector |
px | partial derivatives of the independent variables (same size as x) |
pyNnz | the number of non-zeros of the partial derivatives of the dependent variables (weight functionals) |
idx | the locations of the non-zero values the partial derivatives of the dependent variables (weight functionals) |
py | the non-zero values of the partial derivatives of the dependent variables (weight functionals) |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
Definition at line 430 of file generic_model.hpp.
Referenced by CppAD::cg::GenericModelExternalFunctionWrapper< Base >::reverse(), and CppAD::cg::GenericModel< Base >::ReverseOne().
|
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.
Definition at line 447 of file generic_model.hpp.
|
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.
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
x | independent variable vector |
tx1Nnz | the number of non-zeros of the first-order Taylor coefficients of the independents |
idx | the locations of the non-zero values of the first-order Taylor coefficients of the independents |
tx1 | the values of the non-zero first-order Taylor coefficients of the independents |
px2 | second-order partials of the independents (should have the same size of x) |
py2 | second-order partials of the dependents (should have the size of the dependent variables) |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
Definition at line 521 of file generic_model.hpp.
Referenced by CppAD::cg::GenericModelExternalFunctionWrapper< Base >::reverse(), and CppAD::cg::GenericModel< Base >::ReverseTwo().
|
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.
Definition at line 539 of file generic_model.hpp.
|
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.
evalForwardOne4CppAD | true to perform the forward mode, false to ignore it |
Definition at line 164 of file generic_model.hpp.
|
pure virtual |
Determines the sparse Hessian 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.
x | Contains the several independent variable vectors |
w | The equation multipliers |
w_size | The number of equations |
hess | The values of the sparse hessian in the order provided by row and col |
row | The row indices of the hessian values |
col | The column indices of the hessian values |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
pure virtual |
Calculates a Jacobian using sparse methods and saves it into a dense format:
and
.
x | independent variable array (must have n elements) |
jac | an array where the dense jacobian will be placed (must be allocated with at least m * n elements) |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
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.
x | Contains the several independent variable vectors |
jac | The values of the sparse Jacobian in the order provided by row and col |
row | The row indices of the Jacobian values |
col | The column indices of the Jacobian values |
Implemented in CppAD::cg::FunctorGenericModel< Base >.
|
inline |
Calculates a Jacobian using sparse methods and saves it into a dense format:
and
.
x | independent variable vector |
Definition at line 616 of file generic_model.hpp.
Referenced by CppAD::cg::GenericModel< Base >::SparseJacobian().
|
inline |
Calculates a Jacobian using sparse methods and saves it into a dense format:
and
.
x | independent variable vector |
jac | a vector where the dense jacobian will be placed |
Definition at line 633 of file generic_model.hpp.