atomic_two_ctor

View page source

Atomic Function Constructor

Syntax

atomic_user afun ( ctor_arg_list )
atomic_base < Base >( name , sparsity )

atomic_user

ctor_arg_list

Is a list of arguments for the atomic_user constructor.

afun

The object afun must stay in scope for as long as the corresponding atomic function is used. This includes use by any ADFun<Base> that has this atomic_user operation in its operation sequence .

Implementation

The user defined atomic_user class is a publicly derived class of atomic_base < Base > . It should be declared as follows:

      class atomic_user : public CppAD::atomic_base< Base > {
      public:
            atomic_user ( ctor_arg_list ) : atomic_base < Base >( name , sparsity )
      …
      };

where … denotes the rest of the implementation of the derived class. This includes completing the constructor and all the virtual functions that have their atomic_base implementations replaced by atomic_user implementations.

atomic_base

Restrictions

The atomic_base constructor and destructor cannot be called in parallel mode.

Base

The template parameter determines the Base type for this AD < Base > atomic operation.

name

This atomic_base constructor argument has the following prototype

const std::string& name

It is the name for this atomic function and is used for error reporting. The suggested value for name is afun or atomic_user , i.e., the name of the corresponding atomic object or class.

sparsity

This atomic_base constructor argument has prototype

atomic_base < Base >:: option_enum sparsity

The current sparsity for an atomic_base object determines which type of sparsity patterns it uses and its value is one of the following:

sparsity

sparsity patterns

atomic_base < Base >:: pack_sparsity_enum

vectorBool

atomic_base < Base >:: bool_sparsity_enum

vector <bool>

atomic_base < Base >:: set_sparsity_enum

vector <std::set<std::size_t> >

There is a default value for sparsity if it is not included in the constructor (which may be either the bool or set option).