Sacado  Development
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Types | Protected Attributes | List of all members
Sacado::CacheFad::Expr< SFadExprTag< T, Num > > Class Template Reference

Expression template forward-mode AD class with static memory allocation. More...

#include <Sacado_CacheFad_SFad.hpp>

Collaboration diagram for Sacado::CacheFad::Expr< SFadExprTag< T, Num > >:
Collaboration graph
[legend]

Public Types

typedef RemoveConst< T >::type value_type
 Typename of values.
 
typedef ScalarType< value_type >
::type 
scalar_type
 Typename of scalar's (which may be different from T)
 
typedef SFad< value_type, Num > base_expr_type
 Typename of base-expressions.
 

Public Member Functions

Initialization methods
 Expr ()
 Default constructor.
 
template<typename S >
 Expr (const S &x, typename Sacado::mpl::enable_if< Sacado::mpl::is_convertible< S, value_type >, void * >::type=0)
 Constructor with supplied value x. More...
 
 Expr (const int sz, const T &x, const DerivInit zero_out=InitDerivArray)
 Constructor with size sz and value x. More...
 
 Expr (const int sz, const int i, const T &x)
 Constructor with size sz, index i, and value x. More...
 
 Expr (const Expr &x)
 Copy constructor.
 
template<typename S >
 Expr (const Expr< S > &x, typename mpl::enable_if_c< mpl::is_convertible< typename Expr< S >::value_type, value_type >::value &&ExprLevel< typename Expr< S >::value_type >::value==ExprLevel< value_type >::value, void * >::type=0)
 Copy constructor from any Expression object.
 
 ~Expr ()
 Destructor.
 
void diff (const int ith, const int n)
 Set Fad object as the ith independent variable. More...
 
void resize (int sz)
 Resize derivative array to length sz. More...
 
void expand (int sz)
 Expand derivative array to size sz. More...
 
void zero ()
 Zero out the derivative array.
 
void setUpdateValue (bool update_val)
 Set whether this Fad object should update values.
 
bool updateValue () const
 Return whether this Fad object has an updated value.
 
void cache () const
 Cache values.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, bool >
::type 
isEqualTo (const Expr< S > &x) const
 Returns whether two Fad objects have the same values.
 
Value accessor methods
const T & val () const
 Returns value.
 
T & val ()
 Returns value.
 
Derivative accessor methods
int size () const
 Returns number of derivative components.
 
int availableSize () const
 Returns number of derivative components that can be stored without reallocation.
 
bool hasFastAccess () const
 Returns true if derivative array is not empty.
 
bool isPassive () const
 Returns true if derivative array is empty.
 
void setIsConstant (bool is_const)
 Set whether variable is constant.
 
const T * dx () const
 Returns derivative array.
 
const T & dx (int i) const
 Returns derivative component i with bounds checking.
 
T & fastAccessDx (int i)
 Returns derivative component i without bounds checking.
 
const T & fastAccessDx (int i) const
 Returns derivative component i without bounds checking.
 
Assignment operators
template<typename S >
Sacado::mpl::enable_if
< Sacado::mpl::is_convertible
< S, value_type >, Expr & >
::type 
operator= (const S &v)
 Assignment operator with constant right-hand-side.
 
Exproperator= (const Expr &x)
 Assignment with Expr right-hand-side.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, Expr & >
::type 
operator= (const Expr< S > &x)
 Assignment operator with any expression right-hand-side.
 
Unary operators
template<typename S >
Sacado::mpl::enable_if
< Sacado::mpl::is_convertible
< S, value_type >, Expr & >
::type 
operator+= (const S &v)
 Addition-assignment operator with constant right-hand-side.
 
template<typename S >
Sacado::mpl::enable_if
< Sacado::mpl::is_convertible
< S, value_type >, Expr & >
::type 
operator-= (const S &v)
 Subtraction-assignment operator with constant right-hand-side.
 
template<typename S >
Sacado::mpl::enable_if
< Sacado::mpl::is_convertible
< S, value_type >, Expr & >
::type 
operator*= (const S &v)
 Multiplication-assignment operator with constant right-hand-side.
 
template<typename S >
Sacado::mpl::enable_if
< Sacado::mpl::is_convertible
< S, value_type >, Expr & >
::type 
operator/= (const S &v)
 Division-assignment operator with constant right-hand-side.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, Expr & >
::type 
operator+= (const Expr< S > &x)
 Addition-assignment operator with Expr right-hand-side.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, Expr & >
::type 
operator-= (const Expr< S > &x)
 Subtraction-assignment operator with Expr right-hand-side.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, Expr & >
::type 
operator*= (const Expr< S > &x)
 Multiplication-assignment operator with Expr right-hand-side.
 
template<typename S >
mpl::enable_if_c
< mpl::is_convertible
< typename Expr< S >
::value_type, value_type >
::value &&ExprLevel< typename
Expr< S >::value_type >::value==ExprLevel
< value_type >::value, Expr & >
::type 
operator/= (const Expr< S > &x)
 Division-assignment operator with Expr right-hand-side.
 

Protected Attributes

dx_ [Num]
 Derivatives.
 
val_
 Value.
 

Detailed Description

template<typename T, int Num>
class Sacado::CacheFad::Expr< SFadExprTag< T, Num > >

Expression template forward-mode AD class with static memory allocation.

This classes specializes Expr to SFad expressions.

Constructor & Destructor Documentation

template<typename T , int Num>
template<typename S >
Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::Expr ( const S &  x,
typename Sacado::mpl::enable_if< Sacado::mpl::is_convertible< S, value_type >, void * >::type  = 0 
)
inline

Constructor with supplied value x.

Initializes value to x and derivative array is empty

References Sacado::ss_array< T, isScalar >::zero().

template<typename T , int Num>
Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::Expr ( const int  sz,
const T &  x,
const DerivInit  zero_out = InitDerivArray 
)
inline

Constructor with size sz and value x.

Initializes value to x and derivative array 0 of length sz

References Sacado::ss_array< T, isScalar >::zero().

template<typename T , int Num>
Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::Expr ( const int  sz,
const int  i,
const T &  x 
)
inline

Constructor with size sz, index i, and value x.

Initializes value to x and derivative array of length sz as row i of the identity matrix, i.e., sets derivative component i to 1 and all other's to zero.

References Sacado::ss_array< T, isScalar >::zero().

Member Function Documentation

template<typename T , int Num>
void Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::diff ( const int  ith,
const int  n 
)
inline

Set Fad object as the ith independent variable.

Sets the derivative array of length n to the ith row of the identity matrix and has the same affect as the Implementation(const int sz, const int i, const T & x) constructor.

References Sacado::ss_array< T, isScalar >::zero().

template<typename T , int Num>
void Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::expand ( int  sz)
inline

Expand derivative array to size sz.

Since the derivative array length is not dynamic, this method throws an error if compiled with SACADO_DEBUG defined.

template<typename T , int Num>
void Sacado::CacheFad::Expr< SFadExprTag< T, Num > >::resize ( int  sz)
inline

Resize derivative array to length sz.

Since the derivative array length is not dynamic, this method throws an error if compiled with SACADO_DEBUG defined.


The documentation for this class was generated from the following file: