OpenLB 1.7
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
olb::AnalyticalDerivativeAD1D< D, T, S > Class Template Reference

Class for AD Differentiation of 1-dim Functor F: S -> T. More...

#include <derivativeF.h>

+ Inheritance diagram for olb::AnalyticalDerivativeAD1D< D, T, S >:
+ Collaboration diagram for olb::AnalyticalDerivativeAD1D< D, T, S >:

Public Types

using SAD = util::ADf<S, 1>
 
using TAD = util::ADf<T, 1>
 
- Public Types inherited from olb::AnalyticalF< D, T, S >
using identity_functor_type = AnalyticalIdentity<D,T,S>
 
- Public Types inherited from olb::GenericF< T, S >
using targetType = T
 
using sourceType = S
 

Public Member Functions

 AnalyticalDerivativeAD1D (AnalyticalF< D, TAD, SAD > &f)
 
bool operator() (T output[], const S input[]) override
 AD Differentiation operator implementation.
 
- Public Member Functions inherited from olb::AnalyticalF< D, T, S >
AnalyticalF< D, T, S > & operator- (AnalyticalF< D, T, S > &rhs)
 
AnalyticalF< D, T, S > & operator+ (AnalyticalF< D, T, S > &rhs)
 
AnalyticalF< D, T, S > & operator* (AnalyticalF< D, T, S > &rhs)
 
AnalyticalF< D, T, S > & operator/ (AnalyticalF< D, T, S > &rhs)
 
- Public Member Functions inherited from olb::GenericF< T, S >
virtual ~GenericF ()=default
 
int getSourceDim () const
 read only access to member variable _m
 
int getTargetDim () const
 read only access to member variable _n
 
std::string & getName ()
 read and write access to name
 
std::string const & getName () const
 read only access to name
 
bool operator() (T output[])
 wrapper that call the pure virtual operator() (T output[], const S input[]) from above
 
bool operator() (T output[], S input0)
 
bool operator() (T output[], S input0, S input1)
 
bool operator() (T output[], S input0, S input1, S input2)
 
bool operator() (T output[], S input0, S input1, S input2, S input3)
 

Protected Attributes

AnalyticalF< D, TAD, SAD > & _f
 

Additional Inherited Members

- Public Attributes inherited from olb::GenericF< T, S >
std::shared_ptr< GenericF< T, S > > _ptrCalcC
 memory management, frees resouces (calcClass)
 
- Static Public Attributes inherited from olb::AnalyticalF< D, T, S >
static constexpr unsigned dim = D
 
- Protected Member Functions inherited from olb::AnalyticalF< D, T, S >
 AnalyticalF (int n)
 
- Protected Member Functions inherited from olb::GenericF< T, S >
 GenericF (int targetDim, int sourceDim)
 

Detailed Description

template<unsigned D, typename T, typename S>
class olb::AnalyticalDerivativeAD1D< D, T, S >

Class for AD Differentiation of 1-dim Functor F: S -> T.

Definition at line 71 of file derivativeF.h.

Member Typedef Documentation

◆ SAD

template<unsigned D, typename T , typename S >
using olb::AnalyticalDerivativeAD1D< D, T, S >::SAD = util::ADf<S, 1>

Definition at line 73 of file derivativeF.h.

◆ TAD

template<unsigned D, typename T , typename S >
using olb::AnalyticalDerivativeAD1D< D, T, S >::TAD = util::ADf<T, 1>

Definition at line 74 of file derivativeF.h.

Constructor & Destructor Documentation

◆ AnalyticalDerivativeAD1D()

template<unsigned D, typename T , typename S >
olb::AnalyticalDerivativeAD1D< D, T, S >::AnalyticalDerivativeAD1D ( AnalyticalF< D, TAD, SAD > & f)
inlineexplicit

Definition at line 76 of file derivativeF.h.

76: AnalyticalF<D,T,S>(f.getTargetDim()), _f(f) { };
AnalyticalF< D, TAD, SAD > & _f
Definition derivativeF.h:80

Member Function Documentation

◆ operator()()

template<unsigned D, typename T , typename S >
bool olb::AnalyticalDerivativeAD1D< D, T, S >::operator() ( T output[],
const S input[] )
overridevirtual

AD Differentiation operator implementation.

Implements olb::GenericF< T, S >.

Definition at line 85 of file derivativeF.h.

85 {
86 // Define corresponding AD-data types
87 SAD inpAD(input[0]);
88 inpAD.setDiffVariable(0);
89 TAD outAD(output[0]);
90
91 // Apply f to the AD versions of input, output.
92 _f(&outAD, &inpAD);
93
94 // Return the derivative.
95 output[0] = outAD.d(0);
96
97 return true;
98}

References olb::util::ADf< T, DIM >::d(), and olb::util::ADf< T, DIM >::setDiffVariable().

+ Here is the call graph for this function:

Member Data Documentation

◆ _f

template<unsigned D, typename T , typename S >
AnalyticalF<D,TAD,SAD>& olb::AnalyticalDerivativeAD1D< D, T, S >::_f
protected

Definition at line 80 of file derivativeF.h.


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