#undef ADVECTION_DIM
#undef ADVECTION_ORDERGEO
#undef ADVECTION_ORDERPOLY
#undef ADVECTION_USE_CONTINUOUS
#undef ADVECTION_POLYSET
#undef ADVECTION_PERIODICITY
#undef ADVECTION_DIFFUSIONCOEFF_POLYSET
#undef ADVECTION_REACTIONCOEFF_POLYSET

#define ADVECTION_DIM @ADVECTION_DIM@
#define ADVECTION_ORDERGEO @ADVECTION_ORDERGEO@
#define ADVECTION_ORDERPOLY @ADVECTION_ORDERPOLY@
#define ADVECTION_USE_CONTINUOUS @ADVECTION_USE_CONTINUOUS@ 
#define ADVECTION_POLYSET @ADVECTION_POLYSET@
#define ADVECTION_INTERPOLATIONPOINTS PointSetFekete
#define ADVECTION_ORDER_DIFFUSION_REACTION @ADVECTION_ORDER_DIFFUSION_REACTION@
#define ADVECTION_DIFFUSIONCOEFF_POLYSET @ADVECTION_DIFFUSIONCOEFF_POLYSET@ 
#define ADVECTION_REACTIONCOEFF_POLYSET @ADVECTION_REACTIONCOEFF_POLYSET@
#define ADVECTION_USE_CONTINUOUS_DIFFUSION_REACTION @ADVECTION_USE_CONTINUOUS_DIFFUSION_REACTION@

#if ADVECTION_USE_CONTINUOUS
#define ADVECTION_CONTINUITY_TAG Continuous
#else
#define ADVECTION_CONTINUITY_TAG Discontinuous
#endif

#if ADVECTION_USE_CONTINUOUS_DIFFUSION_REACTION
#define ADVECTION_DIFFUSION_REACTION_CONTINUITY_TAG Continuous
#else
#define ADVECTION_DIFFUSION_REACTION_CONTINUITY_TAG Discontinuous
#endif

#define ADVECTION_PERIODICITY NoPeriodicity

#define ADVDIFFREAC_CLASS_TEMPLATE_DECLARATIONS \
    template< typename FunctionSpaceType, typename FunctionSpaceAdvectionVelocityType, typename BasisDiffusionCoeffType, typename BasisReactionCoeffType> \
        /**/
#define ADVDIFFREAC_CLASS_TEMPLATE_TYPE \
    AdvDiffReac<FunctionSpaceType, FunctionSpaceAdvectionVelocityType, BasisDiffusionCoeffType, BasisReactionCoeffType> \
        /**/
#define ADVDIFFREAC_CLASS_TYPE \
    AdvDiffReac< \
    FunctionSpace< Mesh<Simplex<ADVECTION_DIM,ADVECTION_ORDERGEO,ADVECTION_DIM>>, bases<Lagrange<ADVECTION_ORDERPOLY, ADVECTION_POLYSET, ADVECTION_CONTINUITY_TAG, ADVECTION_INTERPOLATIONPOINTS>>/*, Periodicity<ADVECTION_PERIODICITY>*/ >, \
        FunctionSpace< Mesh<Simplex<ADVECTION_DIM,ADVECTION_ORDERGEO,ADVECTION_DIM>>, bases<Lagrange<ADVECTION_ORDERPOLY, Vectorial, ADVECTION_CONTINUITY_TAG, ADVECTION_INTERPOLATIONPOINTS>>/*, Periodicity<ADVECTION_PERIODICITY>*/ >, \
        Lagrange<ADVECTION_ORDER_DIFFUSION_REACTION, ADVECTION_DIFFUSIONCOEFF_POLYSET, ADVECTION_DIFFUSION_REACTION_CONTINUITY_TAG, ADVECTION_INTERPOLATIONPOINTS >, \
        Lagrange<ADVECTION_ORDER_DIFFUSION_REACTION, ADVECTION_REACTIONCOEFF_POLYSET, ADVECTION_DIFFUSION_REACTION_CONTINUITY_TAG, ADVECTION_INTERPOLATIONPOINTS > \
        >                                                              \
    /**/
#define ADVDIFFREAC_CLASS_INSTANTIATION \
    template class ADVDIFFREAC_CLASS_TYPE ;  \
    /**/
