|
CppAD: A C++ Algorithmic Differentiation Package
20130102
|
| void cppad_ipopt::jac_g_map | ( | cppad_ipopt_fg_info * | fg_info, |
| size_t | m, | ||
| size_t | n, | ||
| size_t | K, | ||
| const CppAD::vector< size_t > & | L, | ||
| const CppAD::vector< size_t > & | p, | ||
| const CppAD::vector< size_t > & | q, | ||
| const CppAD::vector< CppAD::vectorBool > & | pattern_jac_r, | ||
| CppAD::vector< size_t > & | I, | ||
| CppAD::vector< size_t > & | J, | ||
| CppAD::vector< std::map< size_t, size_t > > & | index_jac_g | ||
| ) |
Create mapping from CppAD to Ipopt sparse representations of Jacobian of g.
The functions
and
are defined by the Users Representation.
| fg_info | For k = 0 , ... , K-1, for ell = 0 , ... , L[k], the function call fg_info->index(k, ell, I, J); jac_g_map. The values k and ell are inputs. The input size of I ( J ) is greater than or equal p[k] ( q[k] ) and this size is not changed. The input values of the elements of I and J are not specified. The output value of the elements of I define
J define
|
| m | is the dimension of the range space for ; i.e., . |
| n | is the dimension of the domain space for and ; i.e., . |
| K | is the number of functions used for the representation of and . |
| L | is a vector with size K. For k = 0 , ... , K-1, L[k] is the number of terms that use in the representation of and . |
| p | is a vector with size K. For k = 0 , ... , K-1, p[k] is dimension of the range space for ; i.e., . |
| q | is a vector with size K. For k = 0 , ... , K-1, q[k] is dimension of the domain space for ; i.e., . |
| pattern_jac_r | is a vector with size K. For k = 0 , ... , K-1, pattern_jac_r[k] is a CppAD sparsity pattern for the Jacobian of the function . As such, pattern_jac_r[k].size() == p[k] * q[k]. |
| I | is a work vector of length greater than or equal p[k] for all k. The input and output value of its elements are unspecified. The size of I is not changed. |
| J | is a work vector of length greater than or equal q[k] for all k. The input and output value of its elements are unspecified. The size of J is not changed. |
| index_jac_g,: | On input, this is empty; i.e., index_jac_g.size() == 0. On output, it is the index mapping from in the Jacobian of to the corresponding index value used by Ipopt to represent the Jacobian. Furthermore, if index_jac_g[i].find(j) == index_jac_g[i].end(), then the entry in the Jacobian of is always zero. |
Definition at line 110 of file jac_g_map.cpp.
Referenced by cppad_ipopt::cppad_ipopt_nlp::cppad_ipopt_nlp().