Construct an ADFun Object and Stop Recording
Keywords: construct adfun object stop recording tape syntax purpose x y vectorad default constructor sequence copy assignment operator taylor coefficients sparsity patterns parallel mode example

| Prev | Next |  |  |  |  |  |

Construct an ADFun Object and Stop Recording
Syntax
`ADFun<Base> f, g
` `ADFun<Base> f(x, y)
` `g = f
`
Purpose
The `AD<Base>` object `f` can store an AD of `Base` operation sequence . It can then be used to calculate derivatives of the corresponding AD function F : B n → B m where B is the space corresponding to objects of type `Base` .
x
If the argument `x` is present, it has prototype `
const VectorAD &x
` It must be the vector argument in the previous call to Independent . Neither its size, or any of its values, are allowed to change between calling `
Independent(x)
` and `
ADFun<Base> f(x, y)
`
y
If the argument `y` is present, it has prototype `
const VectorAD &y
` The sequence of operations that map `x` to `y` are stored in the ADFun object `f` .
VectorAD
The type `VectorAD` must be a SimpleVector class with elements of type `AD<Base>` . The routine CheckSimpleVector will generate an error message if this is not the case.
Default Constructor
The default constructor `
ADFun<Base> f
` creates an `AD<Base>` object with no corresponding operation sequence; i.e., `
f.size_var()
` returns the value zero (see size_var ).
Sequence Constructor
The sequence constructor `
ADFun<Base> f(x, y)
` creates the `AD<Base>` object `f` , stops the recording of AD of `Base` operations corresponding to the call `
Independent(x)
` and stores the corresponding operation sequence in the object `f` . It then stores the zero order Taylor coefficients (corresponding to the value of `x` ) in `f` . This is equivalent to the following steps using the default constructor:

1. Create `f` with the default constructor `
   ADFun<Base> f;
   `
2. Stop the tape and storing the operation sequence using `
   f.Dependent(x, y);
   ` (see Dependent ).
3. Calculate the zero order Taylor coefficients for all the variables in the operation sequence using `
   f.Forward(p, x_p)
   ` with `p` equal to zero and the elements of `x_p` equal to the corresponding elements of `x` (see Forward ).

Copy Constructor
It is an error to attempt to use the `ADFun<Base>` copy constructor; i.e., the following syntax is not allowed: `
ADFun<Base> g(f)
` where `f` is an `ADFun<Base>` object. Use its default constructor instead and its assignment operator.
Assignment Operator
The `ADFun<Base>` assignment operation `
g = f
` makes a copy of the operation sequence currently stored in `f` in the object `g` . The object `f` is not affected by this operation and can be `const`. All of information (state) stored in `f` is copied to `g` and any information originally in `g` is lost.
Taylor Coefficients
The Taylor coefficient information currently stored in `f` (computed by f.Forward ) is copied to `g` . Hence, directly after this operation `
g.size_order() == f.size_order()
`
Sparsity Patterns
The forward Jacobian sparsity pattern currently stored in `f` (computed by f.ForSparseJac ) is copied to `g` . Hence, directly after this operation `
g.size_forward_bool() == f.size_forward_bool()
g.size_forward_set() == f.size_forward_set()
`
Parallel Mode
The call to `Independent`, and the corresponding call to `
ADFun<Base> f( x, y)
` or `
f.Dependent( x, y)
` or abort_recording , must be preformed by the same thread; i.e., thread_alloc::thread_num must be the same.
Example
Sequence Constructor
The file independent.cpp contains an example and test of the sequence constructor. It returns true if it succeeds and false otherwise.
Default Constructor
The files fun_check.cpp and hes_lagrangian.cpp contain an examples and tests using the default constructor. They return true if they succeed and false otherwise.
Assignment Operator
The file fun_assign.cpp contains an example and test of the `ADFun<Base>` assignment operator. It returns true if it succeeds and false otherwise.

Input File: cppad/local/fun_construct.hpp