CppAD: A C++ Algorithmic Differentiation Package 20110419
template<class NumVector >
void fun_record ( cppad_ipopt_fg_info fg_info,
size_t  k,
const SizeVector p,
const SizeVector q,
size_t  n,
const NumVector &  x,
const SizeVector J,
CppAD::vector< CppAD::ADFun< Ipopt::Number > > &  r_fun 
)

Records operation sequence for $ r_k (u) $ at $u = [ J \circ n ] (x)$.

Template Parameters:
NumVectoris the type of the argumen x. It can either be Ipopt::Number* or CppAD::vector<Ipopt::Number>; i.e., NumberVector.
Parameters:
fg_infoGiven a value $ u \in {\bf R}^{q[k]} $, fg_info returns the value $ r_k (u) \in {\bf R}^{p[k]} $. using the syntax
	fg_info->eval_r(k, u);	
No other use is made of fg_info.
kis a value less that K specifying the index value for k in the evaluation eval_r.
pp[k] is dimension of the range space for $ r_k (u) $; i.e., $ r_k (u) \in {\bf R}^{p(k)} $.
qq[k] is dimension of the domain space for $ r_k (u) $; i.e., $ u \in {\bf R}^{q(k)} $.
nis the lenght of the vector x.
xthe length of x is equal to n and the point

\[ u = [ J \circ n ] (x) \]

is the point at which the operation sequence for $ r_k $ is recorded.
Jis a vector with lenght q[k] that projects from $ {\bf R}^n $ to $ {\bf R}^{q[k]} $ by selecting an ordered subset of the possible indices $ \{ 0 , \ldots , n-1 \} $. Hence, 0 <= J[j] < n for j = 0 , ... , q[k]-1.
r_funis the vector of AD function objects which has size size greater than k. Only the function object r_fun[k] is referenced. The input value of this function object does not matter. On output it is a recording of the function $ r_k (u) $ at the value of $ u $ specified by x and J.

Definition at line 77 of file fun_record.hpp.

Referenced by cppad_ipopt_nlp::cppad_ipopt_nlp(), cppad_ipopt_nlp::eval_f(), cppad_ipopt_nlp::eval_g(), cppad_ipopt_nlp::eval_grad_f(), cppad_ipopt_nlp::eval_h(), and cppad_ipopt_nlp::eval_jac_g().