[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
ADTypes.hpp
1 #ifndef __AD_TYPES__
2 #define __AD_TYPES__
3 
4 #include <Sacado.hpp>
5 #include <CoDiPack/include/codi.hpp>
6 #include <deal.II/differentiation/ad/sacado_math.h>
7 #include <deal.II/differentiation/ad/sacado_number_types.h>
8 #include <deal.II/differentiation/ad/sacado_product_types.h>
9 
10 namespace PHiLiP {
11 using FadType = Sacado::Fad::DFad<double>;
12 using FadFadType = Sacado::Fad::DFad<FadType>;
13 
14 static constexpr int dimForwardAD = 1;
15 static constexpr int dimReverseAD = 1;
16 
17 using codi_FadType = codi::RealForwardGen<double, codi::Direction<double,dimForwardAD>>;
18 //using codi_FadType = codi::RealForwardGen<double, codi::DirectionVar<double>>;
19 
20 using codi_JacobianComputationType = codi::RealReverseIndexVec<dimReverseAD>;
21 using codi_HessianComputationType = codi::RealReversePrimalIndexGen< codi::RealForwardVec<dimForwardAD>,
22  codi::Direction< codi::RealForwardVec<dimForwardAD>, dimReverseAD>
23  >;
24 
25 //using RadFadType = Sacado::Rad::ADvar<FadType>; ///< Sacado AD type that allows 2nd derivatives.
26 //using RadFadType = codi_JacobianComputationType; ///< Reverse only mode that only allows Jacobian computation.
29 } // PHiLiP namespace
30 
31 #endif
codi::RealReverseIndexVec< dimReverseAD > codi_JacobianComputationType
Reverse mode type for Jacobian computation using TapeHelper.
Definition: ADTypes.hpp:20
Sacado::Fad::DFad< FadType > FadFadType
Sacado AD type that allows 2nd derivatives.
Definition: ADTypes.hpp:12
Sacado::Fad::DFad< double > FadType
Sacado AD type for first derivatives.
Definition: ADTypes.hpp:11
codi_JacobianComputationType RadType
CoDiPaco reverse-AD type for first derivatives.
Definition: ADTypes.hpp:27
Files for the baseline physics.
Definition: ADTypes.hpp:10
static constexpr int dimForwardAD
Size of the forward vector mode for CoDiPack.
Definition: ADTypes.hpp:14
codi::RealReversePrimalIndexGen< codi::RealForwardVec< dimForwardAD >, codi::Direction< codi::RealForwardVec< dimForwardAD >, dimReverseAD > > codi_HessianComputationType
Nested reverse-forward mode type for Jacobian and Hessian computation using TapeHelper.
Definition: ADTypes.hpp:23
static constexpr int dimReverseAD
Size of the reverse vector mode for CoDiPack.
Definition: ADTypes.hpp:15
codi::RealForwardGen< double, codi::Direction< double, dimForwardAD > > codi_FadType
Tapeless forward mode.
Definition: ADTypes.hpp:17
codi_HessianComputationType RadFadType
Nested reverse-forward mode type for Jacobian and Hessian computation using TapeHelper.
Definition: ADTypes.hpp:28