diff --git a/operators/curl_curl/CMakeLists.txt b/operators/curl_curl/CMakeLists.txt
index 1c71f096abb99d180aff540570c8bfb38cdac11a..4fb6eb1d9c118dbca7eb5f98aa1d1907a15e3f3d 100644
--- a/operators/curl_curl/CMakeLists.txt
+++ b/operators/curl_curl/CMakeLists.txt
@@ -35,4 +35,8 @@ endif()
 if (HYTEG_BUILD_WITH_PETSC)
    target_link_libraries(opgen-curl_curl PUBLIC PETSc::PETSc)
 endif ()
-target_compile_features(opgen-curl_curl PUBLIC cxx_std_17)
+if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)
+    target_compile_features(opgen-curl_curl PUBLIC cxx_std_23)
+else ()
+    target_compile_features(opgen-curl_curl PUBLIC cxx_std_17)
+endif ()
diff --git a/operators/curl_curl/N1E1ElementwiseCurlCurl.cpp b/operators/curl_curl/N1E1ElementwiseCurlCurl.cpp
index a06a730100ac09708d147b4a8672668d80de3544..e56028817c28564fca798f1bc05f991dd22e435e 100644
--- a/operators/curl_curl/N1E1ElementwiseCurlCurl.cpp
+++ b/operators/curl_curl/N1E1ElementwiseCurlCurl.cpp
@@ -53,13 +53,16 @@ N1E1ElementwiseCurlCurl::N1E1ElementwiseCurlCurl( const std::shared_ptr< Primiti
 : Operator( storage, minLevel, maxLevel )
 {}
 
-void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& src,
-                                     const n1e1::N1E1VectorFunction< real_t >& dst,
-                                     uint_t                                    level,
-                                     DoFType                                   flag,
-                                     UpdateType                                updateType ) const
+void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< walberla::float64 >& src,
+                                     const n1e1::N1E1VectorFunction< walberla::float64 >& dst,
+                                     uint_t                                               level,
+                                     DoFType                                              flag,
+                                     UpdateType                                           updateType ) const
 {
+   this->startTiming( "apply" );
+
    // Make sure that halos are up-to-date
+   this->timingTree_->start( "pre-communication" );
    if ( this->storage_->hasGlobalCells() )
    {
       // Note that the order of communication is important, since the face -> cell communication may overwrite
@@ -71,6 +74,7 @@ void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& s
    {
       WALBERLA_ABORT( "Not implemented." );
    }
+   this->timingTree_->stop( "pre-communication" );
 
    if ( updateType == Replace )
    {
@@ -78,7 +82,7 @@ void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& s
       // However, we must not zero out anything that is not flagged with the specified BCs.
       // Therefore, we first zero out everything that flagged, and then, later,
       // the halos of the highest dim primitives.
-      dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag );
+      dst.interpolate( walberla::numeric_cast< walberla::float64 >( 0 ), level, flag );
    }
 
    if ( storage_->hasGlobalCells() )
@@ -88,8 +92,8 @@ void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& s
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = cell.getData( src.getDoFs()->getCellDataID() )->getPointer( level );
-         real_t* _data_dst = cell.getData( dst.getDoFs()->getCellDataID() )->getPointer( level );
+         walberla::float64* _data_src = cell.getData( src.getDoFs()->getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dst = cell.getData( dst.getDoFs()->getCellDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -97,20 +101,22 @@ void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& s
          // During additive comm we then skip zeroing the data on the lower-dim primitives.
          edgedof::macrocell::setBoundaryToZero( level, cell, dst.getDoFs()->getCellDataID() );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_3D(
 
@@ -130,19 +136,24 @@ void N1E1ElementwiseCurlCurl::apply( const n1e1::N1E1VectorFunction< real_t >& s
              macro_vertex_coord_id_3comp2,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
    else
    {
       WALBERLA_ABORT( "Not implemented." );
    }
+
+   this->stopTiming( "apply" );
 }
 void N1E1ElementwiseCurlCurl::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                                         const n1e1::N1E1VectorFunction< idx_t >&    src,
@@ -150,6 +161,8 @@ void N1E1ElementwiseCurlCurl::toMatrix( const std::shared_ptr< SparseMatrixProxy
                                         uint_t                                      level,
                                         DoFType                                     flag ) const
 {
+   this->startTiming( "toMatrix" );
+
    // We currently ignore the flag provided!
    if ( flag != All )
    {
@@ -158,6 +171,10 @@ void N1E1ElementwiseCurlCurl::toMatrix( const std::shared_ptr< SparseMatrixProxy
 
    if ( storage_->hasGlobalCells() )
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       for ( auto& it : storage_->getCells() )
       {
          Cell& cell = *it.second;
@@ -166,20 +183,22 @@ void N1E1ElementwiseCurlCurl::toMatrix( const std::shared_ptr< SparseMatrixProxy
          idx_t* _data_src = cell.getData( src.getDoFs()->getCellDataID() )->getPointer( level );
          idx_t* _data_dst = cell.getData( dst.getDoFs()->getCellDataID() )->getPointer( level );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_3D(
 
@@ -202,19 +221,27 @@ void N1E1ElementwiseCurlCurl::toMatrix( const std::shared_ptr< SparseMatrixProxy
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
    else
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       WALBERLA_ABORT( "Not implemented." );
    }
+   this->stopTiming( "toMatrix" );
 }
 void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues()
 {
+   this->startTiming( "computeInverseDiagonalOperatorValues" );
+
    if ( invDiag_ == nullptr )
    {
-      invDiag_ =
-          std::make_shared< n1e1::N1E1VectorFunction< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
+      invDiag_ = std::make_shared< n1e1::N1E1VectorFunction< walberla::float64 > >(
+          "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
    }
 
    for ( uint_t level = minLevel_; level <= maxLevel_; level++ )
@@ -223,27 +250,33 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues()
 
       if ( storage_->hasGlobalCells() )
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          for ( auto& it : storage_->getCells() )
          {
             Cell& cell = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getDoFs()->getCellDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-            const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-            const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-            const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-            const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+            walberla::float64* _data_invDiag_ = cell.getData( ( *invDiag_ ).getDoFs()->getCellDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+            const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+            const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+            const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+            const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_3D(
 
@@ -262,24 +295,33 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_3comp2,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).getDoFs()->communicateAdditively< Cell, Face >( level );
          ( *invDiag_ ).getDoFs()->communicateAdditively< Cell, Edge >( level );
+         this->timingTree_->stop( "post-communication" );
       }
       else
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          WALBERLA_ABORT( "Not implemented." );
       }
 
       ( *invDiag_ ).getDoFs()->invertElementwise( level );
    }
+
+   this->stopTiming( "computeInverseDiagonalOperatorValues" );
 }
-std::shared_ptr< n1e1::N1E1VectorFunction< real_t > > N1E1ElementwiseCurlCurl::getInverseDiagonalValues() const
+std::shared_ptr< n1e1::N1E1VectorFunction< walberla::float64 > > N1E1ElementwiseCurlCurl::getInverseDiagonalValues() const
 {
    return invDiag_;
 }
diff --git a/operators/curl_curl/N1E1ElementwiseCurlCurl.hpp b/operators/curl_curl/N1E1ElementwiseCurlCurl.hpp
index 308fe2933f169d784f4a191576515f9973a90447..8fffad1a90ebb0650ef8c77beee0266f5a6cf985 100644
--- a/operators/curl_curl/N1E1ElementwiseCurlCurl.hpp
+++ b/operators/curl_curl/N1E1ElementwiseCurlCurl.hpp
@@ -44,17 +44,18 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-class N1E1ElementwiseCurlCurl : public Operator< n1e1::N1E1VectorFunction< real_t >, n1e1::N1E1VectorFunction< real_t > >,
-                                public OperatorWithInverseDiagonal< n1e1::N1E1VectorFunction< real_t > >
+class N1E1ElementwiseCurlCurl
+: public Operator< n1e1::N1E1VectorFunction< walberla::float64 >, n1e1::N1E1VectorFunction< walberla::float64 > >,
+  public OperatorWithInverseDiagonal< n1e1::N1E1VectorFunction< walberla::float64 > >
 {
  public:
    N1E1ElementwiseCurlCurl( const std::shared_ptr< PrimitiveStorage >& storage, size_t minLevel, size_t maxLevel );
 
-   void apply( const n1e1::N1E1VectorFunction< real_t >& src,
-               const n1e1::N1E1VectorFunction< real_t >& dst,
-               uint_t                                    level,
-               DoFType                                   flag,
-               UpdateType                                updateType = Replace ) const;
+   void apply( const n1e1::N1E1VectorFunction< walberla::float64 >& src,
+               const n1e1::N1E1VectorFunction< walberla::float64 >& dst,
+               uint_t                                               level,
+               DoFType                                              flag,
+               UpdateType                                           updateType = Replace ) const;
 
    void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                   const n1e1::N1E1VectorFunction< idx_t >&    src,
@@ -64,34 +65,34 @@ class N1E1ElementwiseCurlCurl : public Operator< n1e1::N1E1VectorFunction< real_
 
    void computeInverseDiagonalOperatorValues();
 
-   std::shared_ptr< n1e1::N1E1VectorFunction< real_t > > getInverseDiagonalValues() const;
+   std::shared_ptr< n1e1::N1E1VectorFunction< walberla::float64 > > getInverseDiagonalValues() const;
 
  protected:
  private:
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     87     130       1       0      0              0                 0              0
-   void apply_macro_3D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_0comp2,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_1comp2,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        real_t           macro_vertex_coord_id_2comp2,
-                        real_t           macro_vertex_coord_id_3comp0,
-                        real_t           macro_vertex_coord_id_3comp1,
-                        real_t           macro_vertex_coord_id_3comp2,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_3D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_0comp2,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp2,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp2,
+                        walberla::float64           macro_vertex_coord_id_3comp0,
+                        walberla::float64           macro_vertex_coord_id_3comp1,
+                        walberla::float64           macro_vertex_coord_id_3comp2,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
@@ -100,44 +101,44 @@ class N1E1ElementwiseCurlCurl : public Operator< n1e1::N1E1VectorFunction< real_
                            idx_t* RESTRICT                      _data_src,
                            const Cell&                          cell,
                            const uint_t                         level,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_0comp2,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_1comp2,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
-                           real_t                               macro_vertex_coord_id_2comp2,
-                           real_t                               macro_vertex_coord_id_3comp0,
-                           real_t                               macro_vertex_coord_id_3comp1,
-                           real_t                               macro_vertex_coord_id_3comp2,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp2,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp2,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp2,
+                           walberla::float64                    macro_vertex_coord_id_3comp0,
+                           walberla::float64                    macro_vertex_coord_id_3comp1,
+                           walberla::float64                    macro_vertex_coord_id_3comp2,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     27      43       1       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_0comp2,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_1comp2,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       real_t           macro_vertex_coord_id_2comp2,
-                                                       real_t           macro_vertex_coord_id_3comp0,
-                                                       real_t           macro_vertex_coord_id_3comp1,
-                                                       real_t           macro_vertex_coord_id_3comp2,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
-
-   std::shared_ptr< n1e1::N1E1VectorFunction< real_t > > invDiag_;
+   void computeInverseDiagonalOperatorValues_macro_3D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_0comp2,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp2,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp2,
+                                                       walberla::float64           macro_vertex_coord_id_3comp0,
+                                                       walberla::float64           macro_vertex_coord_id_3comp1,
+                                                       walberla::float64           macro_vertex_coord_id_3comp2,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
+
+   std::shared_ptr< n1e1::N1E1VectorFunction< walberla::float64 > > invDiag_;
 };
 
 } // namespace operatorgeneration
diff --git a/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp b/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
index 4694012e5b8ba5e8f083f8dec7f2af61672f9bc2..5ad282477436069ada685f884d23771c86949798 100644
--- a/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
+++ b/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
@@ -58,72 +58,72 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void N1E1ElementwiseCurlCurl::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t Dummy_22 = jac_affine_0_0_WHITE_UP*4.0;
-       const real_t tmp_1 = jac_affine_1_0_WHITE_UP*4.0;
-       const real_t tmp_2 = jac_affine_2_0_WHITE_UP*4.0;
-       const real_t tmp_3 = -Dummy_22*jac_affine_0_1_WHITE_UP - jac_affine_1_1_WHITE_UP*tmp_1 - jac_affine_2_1_WHITE_UP*tmp_2;
-       const real_t tmp_4 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666666;
-       const real_t tmp_6 = Dummy_22*jac_affine_0_2_WHITE_UP + jac_affine_1_2_WHITE_UP*tmp_1 + jac_affine_2_2_WHITE_UP*tmp_2;
-       const real_t tmp_9 = jac_affine_0_0_WHITE_UP*2.0;
-       const real_t tmp_10 = jac_affine_0_1_WHITE_UP*2.0;
-       const real_t tmp_11 = tmp_10 - tmp_9;
-       const real_t tmp_12 = jac_affine_1_0_WHITE_UP*2.0;
-       const real_t tmp_13 = jac_affine_1_1_WHITE_UP*2.0;
-       const real_t tmp_14 = -tmp_12 + tmp_13;
-       const real_t tmp_15 = jac_affine_2_0_WHITE_UP*2.0;
-       const real_t tmp_16 = jac_affine_2_1_WHITE_UP*2.0;
-       const real_t tmp_17 = -tmp_15 + tmp_16;
-       const real_t tmp_18 = tmp_11*tmp_9 + tmp_12*tmp_14 + tmp_15*tmp_17;
-       const real_t tmp_20 = jac_affine_0_2_WHITE_UP*2.0;
-       const real_t tmp_21 = -tmp_20;
-       const real_t tmp_22 = tmp_21 + tmp_9;
-       const real_t tmp_23 = jac_affine_1_2_WHITE_UP*2.0;
-       const real_t tmp_24 = -tmp_23;
-       const real_t tmp_25 = tmp_12 + tmp_24;
-       const real_t tmp_26 = jac_affine_2_2_WHITE_UP*2.0;
-       const real_t tmp_27 = -tmp_26;
-       const real_t tmp_28 = tmp_15 + tmp_27;
-       const real_t tmp_29 = tmp_12*tmp_25 + tmp_15*tmp_28 + tmp_22*tmp_9;
-       const real_t tmp_31 = -tmp_10 - tmp_21;
-       const real_t tmp_32 = -tmp_13 - tmp_24;
-       const real_t tmp_33 = -tmp_16 - tmp_27;
-       const real_t tmp_34 = tmp_12*tmp_32 + tmp_15*tmp_33 + tmp_31*tmp_9;
-       const real_t tmp_36 = jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0;
-       const real_t tmp_37 = -tmp_10*tmp_11 - tmp_13*tmp_14 - tmp_16*tmp_17;
-       const real_t tmp_38 = -tmp_10*tmp_22 - tmp_13*tmp_25 - tmp_16*tmp_28;
-       const real_t tmp_39 = -tmp_10*tmp_31 - tmp_13*tmp_32 - tmp_16*tmp_33;
-       const real_t tmp_40 = tmp_11*tmp_20 + tmp_14*tmp_23 + tmp_17*tmp_26;
-       const real_t tmp_41 = tmp_20*tmp_22 + tmp_23*tmp_25 + tmp_26*tmp_28;
-       const real_t tmp_42 = tmp_20*tmp_31 + tmp_23*tmp_32 + tmp_26*tmp_33;
-       const real_t tmp_43 = tmp_11*tmp_22 + tmp_14*tmp_25 + tmp_17*tmp_28;
-       const real_t tmp_44 = tmp_11*tmp_31 + tmp_14*tmp_32 + tmp_17*tmp_33;
-       const real_t tmp_45 = tmp_22*tmp_31 + tmp_25*tmp_32 + tmp_28*tmp_33;
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = jac_affine_0_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_1 = jac_affine_1_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_2 = jac_affine_2_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_3 = -jac_affine_0_1_WHITE_UP*tmp_kernel_op_0 - jac_affine_1_1_WHITE_UP*tmp_kernel_op_1 - jac_affine_2_1_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_4 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_0_2_WHITE_UP*tmp_kernel_op_0 + jac_affine_1_2_WHITE_UP*tmp_kernel_op_1 + jac_affine_2_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_0_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_10 = jac_affine_0_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_11 = tmp_kernel_op_10 - tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_12 = jac_affine_1_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_13 = jac_affine_1_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_14 = -tmp_kernel_op_12 + tmp_kernel_op_13;
+       const walberla::float64 tmp_kernel_op_15 = jac_affine_2_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_16 = jac_affine_2_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_17 = -tmp_kernel_op_15 + tmp_kernel_op_16;
+       const walberla::float64 tmp_kernel_op_18 = tmp_kernel_op_11*tmp_kernel_op_9 + tmp_kernel_op_12*tmp_kernel_op_14 + tmp_kernel_op_15*tmp_kernel_op_17;
+       const walberla::float64 tmp_kernel_op_20 = jac_affine_0_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_21 = -tmp_kernel_op_20;
+       const walberla::float64 tmp_kernel_op_22 = tmp_kernel_op_21 + tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_23 = jac_affine_1_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_24 = -tmp_kernel_op_23;
+       const walberla::float64 tmp_kernel_op_25 = tmp_kernel_op_12 + tmp_kernel_op_24;
+       const walberla::float64 tmp_kernel_op_26 = jac_affine_2_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_27 = -tmp_kernel_op_26;
+       const walberla::float64 tmp_kernel_op_28 = tmp_kernel_op_15 + tmp_kernel_op_27;
+       const walberla::float64 tmp_kernel_op_29 = tmp_kernel_op_12*tmp_kernel_op_25 + tmp_kernel_op_15*tmp_kernel_op_28 + tmp_kernel_op_22*tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_31 = -tmp_kernel_op_10 - tmp_kernel_op_21;
+       const walberla::float64 tmp_kernel_op_32 = -tmp_kernel_op_13 - tmp_kernel_op_24;
+       const walberla::float64 tmp_kernel_op_33 = -tmp_kernel_op_16 - tmp_kernel_op_27;
+       const walberla::float64 tmp_kernel_op_34 = tmp_kernel_op_12*tmp_kernel_op_32 + tmp_kernel_op_15*tmp_kernel_op_33 + tmp_kernel_op_31*tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_36 = jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0;
+       const walberla::float64 tmp_kernel_op_37 = -tmp_kernel_op_10*tmp_kernel_op_11 - tmp_kernel_op_13*tmp_kernel_op_14 - tmp_kernel_op_16*tmp_kernel_op_17;
+       const walberla::float64 tmp_kernel_op_38 = -tmp_kernel_op_10*tmp_kernel_op_22 - tmp_kernel_op_13*tmp_kernel_op_25 - tmp_kernel_op_16*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_39 = -tmp_kernel_op_10*tmp_kernel_op_31 - tmp_kernel_op_13*tmp_kernel_op_32 - tmp_kernel_op_16*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_40 = tmp_kernel_op_11*tmp_kernel_op_20 + tmp_kernel_op_14*tmp_kernel_op_23 + tmp_kernel_op_17*tmp_kernel_op_26;
+       const walberla::float64 tmp_kernel_op_41 = tmp_kernel_op_20*tmp_kernel_op_22 + tmp_kernel_op_23*tmp_kernel_op_25 + tmp_kernel_op_26*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_42 = tmp_kernel_op_20*tmp_kernel_op_31 + tmp_kernel_op_23*tmp_kernel_op_32 + tmp_kernel_op_26*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_43 = tmp_kernel_op_11*tmp_kernel_op_22 + tmp_kernel_op_14*tmp_kernel_op_25 + tmp_kernel_op_17*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_44 = tmp_kernel_op_11*tmp_kernel_op_31 + tmp_kernel_op_14*tmp_kernel_op_32 + tmp_kernel_op_17*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_45 = tmp_kernel_op_22*tmp_kernel_op_31 + tmp_kernel_op_25*tmp_kernel_op_32 + tmp_kernel_op_28*tmp_kernel_op_33;
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -137,18 +137,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
-                const __m256d tmp_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d tmp_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d tmp_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP),_mm256_set_pd(jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP),_mm256_set_pd(jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP),_mm256_set_pd(jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP))))),_mm256_mul_pd(tmp_19,_mm256_set_pd(tmp_18,tmp_18,tmp_18,tmp_18))),_mm256_mul_pd(tmp_30,_mm256_set_pd(tmp_29,tmp_29,tmp_29,tmp_29))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_3,tmp_3,tmp_3,tmp_3))),_mm256_mul_pd(tmp_35,_mm256_set_pd(tmp_34,tmp_34,tmp_34,tmp_34))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_6,tmp_6,tmp_6,tmp_6)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP),_mm256_set_pd(jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP),_mm256_set_pd(jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP),_mm256_set_pd(jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP))))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_3,tmp_3,tmp_3,tmp_3))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_36,tmp_36,tmp_36,tmp_36))),_mm256_mul_pd(tmp_19,_mm256_set_pd(tmp_37,tmp_37,tmp_37,tmp_37))),_mm256_mul_pd(tmp_30,_mm256_set_pd(tmp_38,tmp_38,tmp_38,tmp_38))),_mm256_mul_pd(tmp_35,_mm256_set_pd(tmp_39,tmp_39,tmp_39,tmp_39)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP),_mm256_set_pd(jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP),_mm256_set_pd(jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP),_mm256_set_pd(jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP))))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_36,tmp_36,tmp_36,tmp_36))),_mm256_mul_pd(tmp_19,_mm256_set_pd(tmp_40,tmp_40,tmp_40,tmp_40))),_mm256_mul_pd(tmp_30,_mm256_set_pd(tmp_41,tmp_41,tmp_41,tmp_41))),_mm256_mul_pd(tmp_35,_mm256_set_pd(tmp_42,tmp_42,tmp_42,tmp_42))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_6,tmp_6,tmp_6,tmp_6)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_11,tmp_11,tmp_11,tmp_11),_mm256_set_pd(tmp_11,tmp_11,tmp_11,tmp_11)),_mm256_mul_pd(_mm256_set_pd(tmp_14,tmp_14,tmp_14,tmp_14),_mm256_set_pd(tmp_14,tmp_14,tmp_14,tmp_14))),_mm256_mul_pd(_mm256_set_pd(tmp_17,tmp_17,tmp_17,tmp_17),_mm256_set_pd(tmp_17,tmp_17,tmp_17,tmp_17)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_18,tmp_18,tmp_18,tmp_18))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_37,tmp_37,tmp_37,tmp_37))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_40,tmp_40,tmp_40,tmp_40))),_mm256_mul_pd(tmp_30,_mm256_set_pd(tmp_43,tmp_43,tmp_43,tmp_43))),_mm256_mul_pd(tmp_35,_mm256_set_pd(tmp_44,tmp_44,tmp_44,tmp_44)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_22,tmp_22,tmp_22,tmp_22),_mm256_set_pd(tmp_22,tmp_22,tmp_22,tmp_22)),_mm256_mul_pd(_mm256_set_pd(tmp_25,tmp_25,tmp_25,tmp_25),_mm256_set_pd(tmp_25,tmp_25,tmp_25,tmp_25))),_mm256_mul_pd(_mm256_set_pd(tmp_28,tmp_28,tmp_28,tmp_28),_mm256_set_pd(tmp_28,tmp_28,tmp_28,tmp_28)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_29,tmp_29,tmp_29,tmp_29))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_38,tmp_38,tmp_38,tmp_38))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_41,tmp_41,tmp_41,tmp_41))),_mm256_mul_pd(tmp_19,_mm256_set_pd(tmp_43,tmp_43,tmp_43,tmp_43))),_mm256_mul_pd(tmp_35,_mm256_set_pd(tmp_45,tmp_45,tmp_45,tmp_45)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_31,tmp_31,tmp_31,tmp_31),_mm256_set_pd(tmp_31,tmp_31,tmp_31,tmp_31)),_mm256_mul_pd(_mm256_set_pd(tmp_32,tmp_32,tmp_32,tmp_32),_mm256_set_pd(tmp_32,tmp_32,tmp_32,tmp_32))),_mm256_mul_pd(_mm256_set_pd(tmp_33,tmp_33,tmp_33,tmp_33),_mm256_set_pd(tmp_33,tmp_33,tmp_33,tmp_33)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_34,tmp_34,tmp_34,tmp_34))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_39,tmp_39,tmp_39,tmp_39))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_42,tmp_42,tmp_42,tmp_42))),_mm256_mul_pd(tmp_19,_mm256_set_pd(tmp_44,tmp_44,tmp_44,tmp_44))),_mm256_mul_pd(tmp_30,_mm256_set_pd(tmp_45,tmp_45,tmp_45,tmp_45)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP),_mm256_set_pd(jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP,jac_affine_0_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP),_mm256_set_pd(jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP,jac_affine_1_0_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP),_mm256_set_pd(jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP,jac_affine_2_0_WHITE_UP))))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(tmp_kernel_op_18,tmp_kernel_op_18,tmp_kernel_op_18,tmp_kernel_op_18))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(tmp_kernel_op_29,tmp_kernel_op_29,tmp_kernel_op_29,tmp_kernel_op_29))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(tmp_kernel_op_34,tmp_kernel_op_34,tmp_kernel_op_34,tmp_kernel_op_34))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP),_mm256_set_pd(jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP,jac_affine_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP),_mm256_set_pd(jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP,jac_affine_1_1_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP),_mm256_set_pd(jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP,jac_affine_2_1_WHITE_UP))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_36,tmp_kernel_op_36,tmp_kernel_op_36,tmp_kernel_op_36))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(tmp_kernel_op_37,tmp_kernel_op_37,tmp_kernel_op_37,tmp_kernel_op_37))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(tmp_kernel_op_38,tmp_kernel_op_38,tmp_kernel_op_38,tmp_kernel_op_38))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(tmp_kernel_op_39,tmp_kernel_op_39,tmp_kernel_op_39,tmp_kernel_op_39)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP),_mm256_set_pd(jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP,jac_affine_0_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP),_mm256_set_pd(jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP,jac_affine_1_2_WHITE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP),_mm256_set_pd(jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP,jac_affine_2_2_WHITE_UP))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_36,tmp_kernel_op_36,tmp_kernel_op_36,tmp_kernel_op_36))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(tmp_kernel_op_40,tmp_kernel_op_40,tmp_kernel_op_40,tmp_kernel_op_40))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(tmp_kernel_op_41,tmp_kernel_op_41,tmp_kernel_op_41,tmp_kernel_op_41))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(tmp_kernel_op_42,tmp_kernel_op_42,tmp_kernel_op_42,tmp_kernel_op_42))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11),_mm256_set_pd(tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11)),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_14,tmp_kernel_op_14,tmp_kernel_op_14,tmp_kernel_op_14),_mm256_set_pd(tmp_kernel_op_14,tmp_kernel_op_14,tmp_kernel_op_14,tmp_kernel_op_14))),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_17,tmp_kernel_op_17,tmp_kernel_op_17,tmp_kernel_op_17),_mm256_set_pd(tmp_kernel_op_17,tmp_kernel_op_17,tmp_kernel_op_17,tmp_kernel_op_17)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_18,tmp_kernel_op_18,tmp_kernel_op_18,tmp_kernel_op_18))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_37,tmp_kernel_op_37,tmp_kernel_op_37,tmp_kernel_op_37))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_40,tmp_kernel_op_40,tmp_kernel_op_40,tmp_kernel_op_40))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(tmp_kernel_op_43,tmp_kernel_op_43,tmp_kernel_op_43,tmp_kernel_op_43))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(tmp_kernel_op_44,tmp_kernel_op_44,tmp_kernel_op_44,tmp_kernel_op_44)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_22,tmp_kernel_op_22,tmp_kernel_op_22,tmp_kernel_op_22),_mm256_set_pd(tmp_kernel_op_22,tmp_kernel_op_22,tmp_kernel_op_22,tmp_kernel_op_22)),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_25,tmp_kernel_op_25,tmp_kernel_op_25,tmp_kernel_op_25),_mm256_set_pd(tmp_kernel_op_25,tmp_kernel_op_25,tmp_kernel_op_25,tmp_kernel_op_25))),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_28,tmp_kernel_op_28,tmp_kernel_op_28,tmp_kernel_op_28),_mm256_set_pd(tmp_kernel_op_28,tmp_kernel_op_28,tmp_kernel_op_28,tmp_kernel_op_28)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_29,tmp_kernel_op_29,tmp_kernel_op_29,tmp_kernel_op_29))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_38,tmp_kernel_op_38,tmp_kernel_op_38,tmp_kernel_op_38))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_41,tmp_kernel_op_41,tmp_kernel_op_41,tmp_kernel_op_41))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(tmp_kernel_op_43,tmp_kernel_op_43,tmp_kernel_op_43,tmp_kernel_op_43))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(tmp_kernel_op_45,tmp_kernel_op_45,tmp_kernel_op_45,tmp_kernel_op_45)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_31,tmp_kernel_op_31,tmp_kernel_op_31,tmp_kernel_op_31),_mm256_set_pd(tmp_kernel_op_31,tmp_kernel_op_31,tmp_kernel_op_31,tmp_kernel_op_31)),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_32,tmp_kernel_op_32,tmp_kernel_op_32,tmp_kernel_op_32),_mm256_set_pd(tmp_kernel_op_32,tmp_kernel_op_32,tmp_kernel_op_32,tmp_kernel_op_32))),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_33,tmp_kernel_op_33,tmp_kernel_op_33,tmp_kernel_op_33),_mm256_set_pd(tmp_kernel_op_33,tmp_kernel_op_33,tmp_kernel_op_33,tmp_kernel_op_33)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_34,tmp_kernel_op_34,tmp_kernel_op_34,tmp_kernel_op_34))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_39,tmp_kernel_op_39,tmp_kernel_op_39,tmp_kernel_op_39))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_42,tmp_kernel_op_42,tmp_kernel_op_42,tmp_kernel_op_42))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(tmp_kernel_op_44,tmp_kernel_op_44,tmp_kernel_op_44,tmp_kernel_op_44))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(tmp_kernel_op_45,tmp_kernel_op_45,tmp_kernel_op_45,tmp_kernel_op_45)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
@@ -158,24 +158,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t tmp_5 = src_dof_1*tmp_4;
-                const real_t tmp_7 = src_dof_2*tmp_4;
-                const real_t tmp_8 = src_dof_0*tmp_4;
-                const real_t tmp_19 = src_dof_3*tmp_4;
-                const real_t tmp_30 = src_dof_4*tmp_4;
-                const real_t tmp_35 = src_dof_5*tmp_4;
-                const real_t elMatVec_0 = tmp_18*tmp_19 + tmp_29*tmp_30 + tmp_3*tmp_5 + tmp_34*tmp_35 + tmp_6*tmp_7 + tmp_8*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
-                const real_t elMatVec_1 = tmp_19*tmp_37 + tmp_3*tmp_8 + tmp_30*tmp_38 + tmp_35*tmp_39 + tmp_36*tmp_7 + tmp_5*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
-                const real_t elMatVec_2 = tmp_19*tmp_40 + tmp_30*tmp_41 + tmp_35*tmp_42 + tmp_36*tmp_5 + tmp_6*tmp_8 + tmp_7*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
-                const real_t elMatVec_3 = tmp_18*tmp_8 + tmp_19*((tmp_11*tmp_11) + (tmp_14*tmp_14) + (tmp_17*tmp_17)) + tmp_30*tmp_43 + tmp_35*tmp_44 + tmp_37*tmp_5 + tmp_40*tmp_7;
-                const real_t elMatVec_4 = tmp_19*tmp_43 + tmp_29*tmp_8 + tmp_30*((tmp_22*tmp_22) + (tmp_25*tmp_25) + (tmp_28*tmp_28)) + tmp_35*tmp_45 + tmp_38*tmp_5 + tmp_41*tmp_7;
-                const real_t elMatVec_5 = tmp_19*tmp_44 + tmp_30*tmp_45 + tmp_34*tmp_8 + tmp_35*((tmp_31*tmp_31) + (tmp_32*tmp_32) + (tmp_33*tmp_33)) + tmp_39*tmp_5 + tmp_42*tmp_7;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_4;
+                const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_4;
+                const walberla::float64 tmp_kernel_op_8 = src_dof_0*tmp_kernel_op_4;
+                const walberla::float64 tmp_kernel_op_19 = src_dof_3*tmp_kernel_op_4;
+                const walberla::float64 tmp_kernel_op_30 = src_dof_4*tmp_kernel_op_4;
+                const walberla::float64 tmp_kernel_op_35 = src_dof_5*tmp_kernel_op_4;
+                const walberla::float64 elMatVec_0 = tmp_kernel_op_18*tmp_kernel_op_19 + tmp_kernel_op_29*tmp_kernel_op_30 + tmp_kernel_op_3*tmp_kernel_op_5 + tmp_kernel_op_34*tmp_kernel_op_35 + tmp_kernel_op_6*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
+                const walberla::float64 elMatVec_1 = tmp_kernel_op_19*tmp_kernel_op_37 + tmp_kernel_op_3*tmp_kernel_op_8 + tmp_kernel_op_30*tmp_kernel_op_38 + tmp_kernel_op_35*tmp_kernel_op_39 + tmp_kernel_op_36*tmp_kernel_op_7 + tmp_kernel_op_5*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
+                const walberla::float64 elMatVec_2 = tmp_kernel_op_19*tmp_kernel_op_40 + tmp_kernel_op_30*tmp_kernel_op_41 + tmp_kernel_op_35*tmp_kernel_op_42 + tmp_kernel_op_36*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
+                const walberla::float64 elMatVec_3 = tmp_kernel_op_18*tmp_kernel_op_8 + tmp_kernel_op_19*((tmp_kernel_op_11*tmp_kernel_op_11) + (tmp_kernel_op_14*tmp_kernel_op_14) + (tmp_kernel_op_17*tmp_kernel_op_17)) + tmp_kernel_op_30*tmp_kernel_op_43 + tmp_kernel_op_35*tmp_kernel_op_44 + tmp_kernel_op_37*tmp_kernel_op_5 + tmp_kernel_op_40*tmp_kernel_op_7;
+                const walberla::float64 elMatVec_4 = tmp_kernel_op_19*tmp_kernel_op_43 + tmp_kernel_op_29*tmp_kernel_op_8 + tmp_kernel_op_30*((tmp_kernel_op_22*tmp_kernel_op_22) + (tmp_kernel_op_25*tmp_kernel_op_25) + (tmp_kernel_op_28*tmp_kernel_op_28)) + tmp_kernel_op_35*tmp_kernel_op_45 + tmp_kernel_op_38*tmp_kernel_op_5 + tmp_kernel_op_41*tmp_kernel_op_7;
+                const walberla::float64 elMatVec_5 = tmp_kernel_op_19*tmp_kernel_op_44 + tmp_kernel_op_30*tmp_kernel_op_45 + tmp_kernel_op_34*tmp_kernel_op_8 + tmp_kernel_op_35*((tmp_kernel_op_31*tmp_kernel_op_31) + (tmp_kernel_op_32*tmp_kernel_op_32) + (tmp_kernel_op_33*tmp_kernel_op_33)) + tmp_kernel_op_39*tmp_kernel_op_5 + tmp_kernel_op_42*tmp_kernel_op_7;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -185,81 +185,81 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t Dummy_23 = jac_affine_0_0_WHITE_DOWN*4.0;
-       const real_t Dummy_24 = jac_affine_1_0_WHITE_DOWN*4.0;
-       const real_t Dummy_25 = jac_affine_2_0_WHITE_DOWN*4.0;
-       const real_t Dummy_26 = -Dummy_23*jac_affine_0_1_WHITE_DOWN - Dummy_24*jac_affine_1_1_WHITE_DOWN - Dummy_25*jac_affine_2_1_WHITE_DOWN;
-       const real_t Dummy_27 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666666;
-       const real_t Dummy_28 = Dummy_23*jac_affine_0_2_WHITE_DOWN + Dummy_24*jac_affine_1_2_WHITE_DOWN + Dummy_25*jac_affine_2_2_WHITE_DOWN;
-       const real_t Dummy_29 = jac_affine_0_0_WHITE_DOWN*2.0;
-       const real_t Dummy_30 = jac_affine_0_1_WHITE_DOWN*2.0;
-       const real_t Dummy_31 = -Dummy_29 + Dummy_30;
-       const real_t Dummy_32 = jac_affine_1_0_WHITE_DOWN*2.0;
-       const real_t Dummy_33 = jac_affine_1_1_WHITE_DOWN*2.0;
-       const real_t Dummy_34 = -Dummy_32 + Dummy_33;
-       const real_t Dummy_35 = jac_affine_2_0_WHITE_DOWN*2.0;
-       const real_t Dummy_36 = jac_affine_2_1_WHITE_DOWN*2.0;
-       const real_t Dummy_37 = -Dummy_35 + Dummy_36;
-       const real_t Dummy_38 = Dummy_29*Dummy_31 + Dummy_32*Dummy_34 + Dummy_35*Dummy_37;
-       const real_t Dummy_39 = jac_affine_0_2_WHITE_DOWN*2.0;
-       const real_t Dummy_40 = -Dummy_39;
-       const real_t Dummy_41 = Dummy_29 + Dummy_40;
-       const real_t Dummy_42 = jac_affine_1_2_WHITE_DOWN*2.0;
-       const real_t Dummy_43 = -Dummy_42;
-       const real_t Dummy_44 = Dummy_32 + Dummy_43;
-       const real_t Dummy_45 = jac_affine_2_2_WHITE_DOWN*2.0;
-       const real_t Dummy_46 = -Dummy_45;
-       const real_t Dummy_47 = Dummy_35 + Dummy_46;
-       const real_t Dummy_48 = Dummy_29*Dummy_41 + Dummy_32*Dummy_44 + Dummy_35*Dummy_47;
-       const real_t Dummy_49 = -Dummy_30 - Dummy_40;
-       const real_t Dummy_50 = -Dummy_33 - Dummy_43;
-       const real_t Dummy_51 = -Dummy_36 - Dummy_46;
-       const real_t Dummy_52 = Dummy_29*Dummy_49 + Dummy_32*Dummy_50 + Dummy_35*Dummy_51;
-       const real_t Dummy_53 = jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0;
-       const real_t Dummy_54 = -Dummy_30*Dummy_31 - Dummy_33*Dummy_34 - Dummy_36*Dummy_37;
-       const real_t Dummy_55 = -Dummy_30*Dummy_41 - Dummy_33*Dummy_44 - Dummy_36*Dummy_47;
-       const real_t Dummy_56 = -Dummy_30*Dummy_49 - Dummy_33*Dummy_50 - Dummy_36*Dummy_51;
-       const real_t Dummy_57 = Dummy_31*Dummy_39 + Dummy_34*Dummy_42 + Dummy_37*Dummy_45;
-       const real_t Dummy_58 = Dummy_39*Dummy_41 + Dummy_42*Dummy_44 + Dummy_45*Dummy_47;
-       const real_t Dummy_59 = Dummy_39*Dummy_49 + Dummy_42*Dummy_50 + Dummy_45*Dummy_51;
-       const real_t Dummy_60 = Dummy_31*Dummy_41 + Dummy_34*Dummy_44 + Dummy_37*Dummy_47;
-       const real_t Dummy_61 = Dummy_31*Dummy_49 + Dummy_34*Dummy_50 + Dummy_37*Dummy_51;
-       const real_t Dummy_62 = Dummy_41*Dummy_49 + Dummy_44*Dummy_50 + Dummy_47*Dummy_51;
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 Dummy_22 = jac_affine_0_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_23 = jac_affine_1_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_24 = jac_affine_2_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_25 = -Dummy_22*jac_affine_0_1_WHITE_DOWN - Dummy_23*jac_affine_1_1_WHITE_DOWN - Dummy_24*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_26 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_27 = Dummy_22*jac_affine_0_2_WHITE_DOWN + Dummy_23*jac_affine_1_2_WHITE_DOWN + Dummy_24*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_28 = jac_affine_0_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_29 = jac_affine_0_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_30 = -Dummy_28 + Dummy_29;
+       const walberla::float64 Dummy_31 = jac_affine_1_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_32 = jac_affine_1_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_33 = -Dummy_31 + Dummy_32;
+       const walberla::float64 Dummy_34 = jac_affine_2_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_35 = jac_affine_2_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_36 = -Dummy_34 + Dummy_35;
+       const walberla::float64 Dummy_37 = Dummy_28*Dummy_30 + Dummy_31*Dummy_33 + Dummy_34*Dummy_36;
+       const walberla::float64 Dummy_38 = jac_affine_0_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_39 = -Dummy_38;
+       const walberla::float64 Dummy_40 = Dummy_28 + Dummy_39;
+       const walberla::float64 Dummy_41 = jac_affine_1_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_42 = -Dummy_41;
+       const walberla::float64 Dummy_43 = Dummy_31 + Dummy_42;
+       const walberla::float64 Dummy_44 = jac_affine_2_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_45 = -Dummy_44;
+       const walberla::float64 Dummy_46 = Dummy_34 + Dummy_45;
+       const walberla::float64 Dummy_47 = Dummy_28*Dummy_40 + Dummy_31*Dummy_43 + Dummy_34*Dummy_46;
+       const walberla::float64 Dummy_48 = -Dummy_29 - Dummy_39;
+       const walberla::float64 Dummy_49 = -Dummy_32 - Dummy_42;
+       const walberla::float64 Dummy_50 = -Dummy_35 - Dummy_45;
+       const walberla::float64 Dummy_51 = Dummy_28*Dummy_48 + Dummy_31*Dummy_49 + Dummy_34*Dummy_50;
+       const walberla::float64 Dummy_52 = jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0;
+       const walberla::float64 Dummy_53 = -Dummy_29*Dummy_30 - Dummy_32*Dummy_33 - Dummy_35*Dummy_36;
+       const walberla::float64 Dummy_54 = -Dummy_29*Dummy_40 - Dummy_32*Dummy_43 - Dummy_35*Dummy_46;
+       const walberla::float64 Dummy_55 = -Dummy_29*Dummy_48 - Dummy_32*Dummy_49 - Dummy_35*Dummy_50;
+       const walberla::float64 Dummy_56 = Dummy_30*Dummy_38 + Dummy_33*Dummy_41 + Dummy_36*Dummy_44;
+       const walberla::float64 Dummy_57 = Dummy_38*Dummy_40 + Dummy_41*Dummy_43 + Dummy_44*Dummy_46;
+       const walberla::float64 Dummy_58 = Dummy_38*Dummy_48 + Dummy_41*Dummy_49 + Dummy_44*Dummy_50;
+       const walberla::float64 Dummy_59 = Dummy_30*Dummy_40 + Dummy_33*Dummy_43 + Dummy_36*Dummy_46;
+       const walberla::float64 Dummy_60 = Dummy_30*Dummy_48 + Dummy_33*Dummy_49 + Dummy_36*Dummy_50;
+       const walberla::float64 Dummy_61 = Dummy_40*Dummy_48 + Dummy_43*Dummy_49 + Dummy_46*Dummy_50;
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -273,18 +273,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]);
-                const __m256d tmp_5_WHITE_DOWN = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d tmp_7_WHITE_DOWN = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d tmp_8_WHITE_DOWN = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN))))),_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26))),_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_set_pd(Dummy_28,Dummy_28,Dummy_28,Dummy_28))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_38,Dummy_38,Dummy_38,Dummy_38))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_48,Dummy_48,Dummy_48,Dummy_48))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_52,Dummy_52,Dummy_52,Dummy_52)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN))))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26))),_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_set_pd(Dummy_53,Dummy_53,Dummy_53,Dummy_53))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_54,Dummy_54,Dummy_54,Dummy_54))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_55,Dummy_55,Dummy_55,Dummy_55))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_56,Dummy_56,Dummy_56,Dummy_56)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN))))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_28,Dummy_28,Dummy_28,Dummy_28))),_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_set_pd(Dummy_53,Dummy_53,Dummy_53,Dummy_53))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_57,Dummy_57,Dummy_57,Dummy_57))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_58,Dummy_58,Dummy_58,Dummy_58))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_59,Dummy_59,Dummy_59,Dummy_59)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_31,Dummy_31,Dummy_31,Dummy_31),_mm256_set_pd(Dummy_31,Dummy_31,Dummy_31,Dummy_31)),_mm256_mul_pd(_mm256_set_pd(Dummy_34,Dummy_34,Dummy_34,Dummy_34),_mm256_set_pd(Dummy_34,Dummy_34,Dummy_34,Dummy_34))),_mm256_mul_pd(_mm256_set_pd(Dummy_37,Dummy_37,Dummy_37,Dummy_37),_mm256_set_pd(Dummy_37,Dummy_37,Dummy_37,Dummy_37)))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_38,Dummy_38,Dummy_38,Dummy_38))),_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_set_pd(Dummy_54,Dummy_54,Dummy_54,Dummy_54))),_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_set_pd(Dummy_57,Dummy_57,Dummy_57,Dummy_57))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_60,Dummy_60,Dummy_60,Dummy_60))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_61,Dummy_61,Dummy_61,Dummy_61)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_41,Dummy_41,Dummy_41,Dummy_41),_mm256_set_pd(Dummy_41,Dummy_41,Dummy_41,Dummy_41)),_mm256_mul_pd(_mm256_set_pd(Dummy_44,Dummy_44,Dummy_44,Dummy_44),_mm256_set_pd(Dummy_44,Dummy_44,Dummy_44,Dummy_44))),_mm256_mul_pd(_mm256_set_pd(Dummy_47,Dummy_47,Dummy_47,Dummy_47),_mm256_set_pd(Dummy_47,Dummy_47,Dummy_47,Dummy_47)))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_48,Dummy_48,Dummy_48,Dummy_48))),_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_set_pd(Dummy_55,Dummy_55,Dummy_55,Dummy_55))),_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_set_pd(Dummy_58,Dummy_58,Dummy_58,Dummy_58))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_60,Dummy_60,Dummy_60,Dummy_60))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_62,Dummy_62,Dummy_62,Dummy_62)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_49,Dummy_49,Dummy_49,Dummy_49),_mm256_set_pd(Dummy_49,Dummy_49,Dummy_49,Dummy_49)),_mm256_mul_pd(_mm256_set_pd(Dummy_50,Dummy_50,Dummy_50,Dummy_50),_mm256_set_pd(Dummy_50,Dummy_50,Dummy_50,Dummy_50))),_mm256_mul_pd(_mm256_set_pd(Dummy_51,Dummy_51,Dummy_51,Dummy_51),_mm256_set_pd(Dummy_51,Dummy_51,Dummy_51,Dummy_51)))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_52,Dummy_52,Dummy_52,Dummy_52))),_mm256_mul_pd(tmp_5_WHITE_DOWN,_mm256_set_pd(Dummy_56,Dummy_56,Dummy_56,Dummy_56))),_mm256_mul_pd(tmp_7_WHITE_DOWN,_mm256_set_pd(Dummy_59,Dummy_59,Dummy_59,Dummy_59))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_61,Dummy_61,Dummy_61,Dummy_61))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_62,Dummy_62,Dummy_62,Dummy_62)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_26,Dummy_26,Dummy_26,Dummy_26));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN,jac_affine_0_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN,jac_affine_1_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN,jac_affine_2_0_WHITE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_25,Dummy_25,Dummy_25,Dummy_25))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_37,Dummy_37,Dummy_37,Dummy_37))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_47,Dummy_47,Dummy_47,Dummy_47))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_51,Dummy_51,Dummy_51,Dummy_51)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN,jac_affine_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN,jac_affine_1_1_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN,jac_affine_2_1_WHITE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_25,Dummy_25,Dummy_25,Dummy_25))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_52,Dummy_52,Dummy_52,Dummy_52))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_53,Dummy_53,Dummy_53,Dummy_53))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_54,Dummy_54,Dummy_54,Dummy_54))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_55,Dummy_55,Dummy_55,Dummy_55)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN,jac_affine_0_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN,jac_affine_1_2_WHITE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN,jac_affine_2_2_WHITE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_27,Dummy_27,Dummy_27,Dummy_27))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_52,Dummy_52,Dummy_52,Dummy_52))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_56,Dummy_56,Dummy_56,Dummy_56))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_57,Dummy_57,Dummy_57,Dummy_57))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_58,Dummy_58,Dummy_58,Dummy_58)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_30,Dummy_30,Dummy_30,Dummy_30),_mm256_set_pd(Dummy_30,Dummy_30,Dummy_30,Dummy_30)),_mm256_mul_pd(_mm256_set_pd(Dummy_33,Dummy_33,Dummy_33,Dummy_33),_mm256_set_pd(Dummy_33,Dummy_33,Dummy_33,Dummy_33))),_mm256_mul_pd(_mm256_set_pd(Dummy_36,Dummy_36,Dummy_36,Dummy_36),_mm256_set_pd(Dummy_36,Dummy_36,Dummy_36,Dummy_36)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_37,Dummy_37,Dummy_37,Dummy_37))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_53,Dummy_53,Dummy_53,Dummy_53))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_56,Dummy_56,Dummy_56,Dummy_56))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_59,Dummy_59,Dummy_59,Dummy_59))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_60,Dummy_60,Dummy_60,Dummy_60)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_40,Dummy_40,Dummy_40,Dummy_40),_mm256_set_pd(Dummy_40,Dummy_40,Dummy_40,Dummy_40)),_mm256_mul_pd(_mm256_set_pd(Dummy_43,Dummy_43,Dummy_43,Dummy_43),_mm256_set_pd(Dummy_43,Dummy_43,Dummy_43,Dummy_43))),_mm256_mul_pd(_mm256_set_pd(Dummy_46,Dummy_46,Dummy_46,Dummy_46),_mm256_set_pd(Dummy_46,Dummy_46,Dummy_46,Dummy_46)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_47,Dummy_47,Dummy_47,Dummy_47))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_54,Dummy_54,Dummy_54,Dummy_54))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_57,Dummy_57,Dummy_57,Dummy_57))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_59,Dummy_59,Dummy_59,Dummy_59))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_61,Dummy_61,Dummy_61,Dummy_61)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_48,Dummy_48,Dummy_48,Dummy_48),_mm256_set_pd(Dummy_48,Dummy_48,Dummy_48,Dummy_48)),_mm256_mul_pd(_mm256_set_pd(Dummy_49,Dummy_49,Dummy_49,Dummy_49),_mm256_set_pd(Dummy_49,Dummy_49,Dummy_49,Dummy_49))),_mm256_mul_pd(_mm256_set_pd(Dummy_50,Dummy_50,Dummy_50,Dummy_50),_mm256_set_pd(Dummy_50,Dummy_50,Dummy_50,Dummy_50)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_51,Dummy_51,Dummy_51,Dummy_51))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_55,Dummy_55,Dummy_55,Dummy_55))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_58,Dummy_58,Dummy_58,Dummy_58))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_60,Dummy_60,Dummy_60,Dummy_60))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_61,Dummy_61,Dummy_61,Dummy_61)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
@@ -294,24 +294,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_4 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t tmp_5_WHITE_DOWN = Dummy_27*src_dof_1;
-                const real_t tmp_7_WHITE_DOWN = Dummy_27*src_dof_2;
-                const real_t tmp_8_WHITE_DOWN = Dummy_27*src_dof_0;
-                const real_t tmp_19 = Dummy_27*src_dof_3;
-                const real_t tmp_30 = Dummy_27*src_dof_4;
-                const real_t tmp_35 = Dummy_27*src_dof_5;
-                const real_t elMatVec_0 = Dummy_26*tmp_5_WHITE_DOWN + Dummy_28*tmp_7_WHITE_DOWN + Dummy_38*tmp_19 + Dummy_48*tmp_30 + Dummy_52*tmp_35 + tmp_8_WHITE_DOWN*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
-                const real_t elMatVec_1 = Dummy_26*tmp_8_WHITE_DOWN + Dummy_53*tmp_7_WHITE_DOWN + Dummy_54*tmp_19 + Dummy_55*tmp_30 + Dummy_56*tmp_35 + tmp_5_WHITE_DOWN*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
-                const real_t elMatVec_2 = Dummy_28*tmp_8_WHITE_DOWN + Dummy_53*tmp_5_WHITE_DOWN + Dummy_57*tmp_19 + Dummy_58*tmp_30 + Dummy_59*tmp_35 + tmp_7_WHITE_DOWN*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
-                const real_t elMatVec_3 = Dummy_38*tmp_8_WHITE_DOWN + Dummy_54*tmp_5_WHITE_DOWN + Dummy_57*tmp_7_WHITE_DOWN + Dummy_60*tmp_30 + Dummy_61*tmp_35 + tmp_19*((Dummy_31*Dummy_31) + (Dummy_34*Dummy_34) + (Dummy_37*Dummy_37));
-                const real_t elMatVec_4 = Dummy_48*tmp_8_WHITE_DOWN + Dummy_55*tmp_5_WHITE_DOWN + Dummy_58*tmp_7_WHITE_DOWN + Dummy_60*tmp_19 + Dummy_62*tmp_35 + tmp_30*((Dummy_41*Dummy_41) + (Dummy_44*Dummy_44) + (Dummy_47*Dummy_47));
-                const real_t elMatVec_5 = Dummy_52*tmp_8_WHITE_DOWN + Dummy_56*tmp_5_WHITE_DOWN + Dummy_59*tmp_7_WHITE_DOWN + Dummy_61*tmp_19 + Dummy_62*tmp_30 + tmp_35*((Dummy_49*Dummy_49) + (Dummy_50*Dummy_50) + (Dummy_51*Dummy_51));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 tmp_kernel_op_5 = Dummy_26*src_dof_1;
+                const walberla::float64 tmp_kernel_op_7 = Dummy_26*src_dof_2;
+                const walberla::float64 tmp_kernel_op_8 = Dummy_26*src_dof_0;
+                const walberla::float64 tmp_kernel_op_19 = Dummy_26*src_dof_3;
+                const walberla::float64 tmp_kernel_op_30 = Dummy_26*src_dof_4;
+                const walberla::float64 tmp_kernel_op_35 = Dummy_26*src_dof_5;
+                const walberla::float64 elMatVec_0 = Dummy_25*tmp_kernel_op_5 + Dummy_27*tmp_kernel_op_7 + Dummy_37*tmp_kernel_op_19 + Dummy_47*tmp_kernel_op_30 + Dummy_51*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
+                const walberla::float64 elMatVec_1 = Dummy_25*tmp_kernel_op_8 + Dummy_52*tmp_kernel_op_7 + Dummy_53*tmp_kernel_op_19 + Dummy_54*tmp_kernel_op_30 + Dummy_55*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
+                const walberla::float64 elMatVec_2 = Dummy_27*tmp_kernel_op_8 + Dummy_52*tmp_kernel_op_5 + Dummy_56*tmp_kernel_op_19 + Dummy_57*tmp_kernel_op_30 + Dummy_58*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
+                const walberla::float64 elMatVec_3 = Dummy_37*tmp_kernel_op_8 + Dummy_53*tmp_kernel_op_5 + Dummy_56*tmp_kernel_op_7 + Dummy_59*tmp_kernel_op_30 + Dummy_60*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_30*Dummy_30) + (Dummy_33*Dummy_33) + (Dummy_36*Dummy_36));
+                const walberla::float64 elMatVec_4 = Dummy_47*tmp_kernel_op_8 + Dummy_54*tmp_kernel_op_5 + Dummy_57*tmp_kernel_op_7 + Dummy_59*tmp_kernel_op_19 + Dummy_61*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_40*Dummy_40) + (Dummy_43*Dummy_43) + (Dummy_46*Dummy_46));
+                const walberla::float64 elMatVec_5 = Dummy_51*tmp_kernel_op_8 + Dummy_55*tmp_kernel_op_5 + Dummy_58*tmp_kernel_op_7 + Dummy_60*tmp_kernel_op_19 + Dummy_61*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_48*Dummy_48) + (Dummy_49*Dummy_49) + (Dummy_50*Dummy_50));
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
@@ -321,75 +321,75 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t Dummy_63 = jac_affine_0_0_BLUE_UP*4.0;
-       const real_t Dummy_64 = jac_affine_1_0_BLUE_UP*4.0;
-       const real_t Dummy_65 = jac_affine_2_0_BLUE_UP*4.0;
-       const real_t Dummy_66 = -Dummy_63*jac_affine_0_1_BLUE_UP - Dummy_64*jac_affine_1_1_BLUE_UP - Dummy_65*jac_affine_2_1_BLUE_UP;
-       const real_t Dummy_67 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666666;
-       const real_t Dummy_68 = Dummy_63*jac_affine_0_2_BLUE_UP + Dummy_64*jac_affine_1_2_BLUE_UP + Dummy_65*jac_affine_2_2_BLUE_UP;
-       const real_t Dummy_69 = jac_affine_0_0_BLUE_UP*2.0;
-       const real_t Dummy_70 = jac_affine_0_1_BLUE_UP*2.0;
-       const real_t Dummy_71 = -Dummy_69 + Dummy_70;
-       const real_t Dummy_72 = jac_affine_1_0_BLUE_UP*2.0;
-       const real_t Dummy_73 = jac_affine_1_1_BLUE_UP*2.0;
-       const real_t Dummy_74 = -Dummy_72 + Dummy_73;
-       const real_t Dummy_75 = jac_affine_2_0_BLUE_UP*2.0;
-       const real_t Dummy_76 = jac_affine_2_1_BLUE_UP*2.0;
-       const real_t Dummy_77 = -Dummy_75 + Dummy_76;
-       const real_t Dummy_78 = Dummy_69*Dummy_71 + Dummy_72*Dummy_74 + Dummy_75*Dummy_77;
-       const real_t Dummy_79 = jac_affine_0_2_BLUE_UP*2.0;
-       const real_t Dummy_80 = -Dummy_79;
-       const real_t Dummy_81 = Dummy_69 + Dummy_80;
-       const real_t Dummy_82 = jac_affine_1_2_BLUE_UP*2.0;
-       const real_t Dummy_83 = -Dummy_82;
-       const real_t Dummy_84 = Dummy_72 + Dummy_83;
-       const real_t Dummy_85 = jac_affine_2_2_BLUE_UP*2.0;
-       const real_t Dummy_86 = -Dummy_85;
-       const real_t Dummy_87 = Dummy_75 + Dummy_86;
-       const real_t Dummy_88 = Dummy_69*Dummy_81 + Dummy_72*Dummy_84 + Dummy_75*Dummy_87;
-       const real_t Dummy_89 = -Dummy_70 - Dummy_80;
-       const real_t Dummy_90 = -Dummy_73 - Dummy_83;
-       const real_t Dummy_91 = -Dummy_76 - Dummy_86;
-       const real_t Dummy_92 = Dummy_69*Dummy_89 + Dummy_72*Dummy_90 + Dummy_75*Dummy_91;
-       const real_t Dummy_93 = jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0;
-       const real_t Dummy_94 = -Dummy_70*Dummy_71 - Dummy_73*Dummy_74 - Dummy_76*Dummy_77;
-       const real_t Dummy_95 = -Dummy_70*Dummy_81 - Dummy_73*Dummy_84 - Dummy_76*Dummy_87;
-       const real_t Dummy_96 = -Dummy_70*Dummy_89 - Dummy_73*Dummy_90 - Dummy_76*Dummy_91;
-       const real_t Dummy_97 = Dummy_71*Dummy_79 + Dummy_74*Dummy_82 + Dummy_77*Dummy_85;
-       const real_t Dummy_98 = Dummy_79*Dummy_81 + Dummy_82*Dummy_84 + Dummy_85*Dummy_87;
-       const real_t Dummy_99 = Dummy_79*Dummy_89 + Dummy_82*Dummy_90 + Dummy_85*Dummy_91;
-       const real_t Dummy_100 = Dummy_71*Dummy_81 + Dummy_74*Dummy_84 + Dummy_77*Dummy_87;
-       const real_t Dummy_101 = Dummy_71*Dummy_89 + Dummy_74*Dummy_90 + Dummy_77*Dummy_91;
-       const real_t Dummy_102 = Dummy_81*Dummy_89 + Dummy_84*Dummy_90 + Dummy_87*Dummy_91;
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 Dummy_62 = jac_affine_0_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_63 = jac_affine_1_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_64 = jac_affine_2_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_65 = -Dummy_62*jac_affine_0_1_BLUE_UP - Dummy_63*jac_affine_1_1_BLUE_UP - Dummy_64*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 Dummy_66 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_67 = Dummy_62*jac_affine_0_2_BLUE_UP + Dummy_63*jac_affine_1_2_BLUE_UP + Dummy_64*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 Dummy_68 = jac_affine_0_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_69 = jac_affine_0_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_70 = -Dummy_68 + Dummy_69;
+       const walberla::float64 Dummy_71 = jac_affine_1_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_72 = jac_affine_1_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_73 = -Dummy_71 + Dummy_72;
+       const walberla::float64 Dummy_74 = jac_affine_2_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_75 = jac_affine_2_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_76 = -Dummy_74 + Dummy_75;
+       const walberla::float64 Dummy_77 = Dummy_68*Dummy_70 + Dummy_71*Dummy_73 + Dummy_74*Dummy_76;
+       const walberla::float64 Dummy_78 = jac_affine_0_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_79 = -Dummy_78;
+       const walberla::float64 Dummy_80 = Dummy_68 + Dummy_79;
+       const walberla::float64 Dummy_81 = jac_affine_1_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_82 = -Dummy_81;
+       const walberla::float64 Dummy_83 = Dummy_71 + Dummy_82;
+       const walberla::float64 Dummy_84 = jac_affine_2_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_85 = -Dummy_84;
+       const walberla::float64 Dummy_86 = Dummy_74 + Dummy_85;
+       const walberla::float64 Dummy_87 = Dummy_68*Dummy_80 + Dummy_71*Dummy_83 + Dummy_74*Dummy_86;
+       const walberla::float64 Dummy_88 = -Dummy_69 - Dummy_79;
+       const walberla::float64 Dummy_89 = -Dummy_72 - Dummy_82;
+       const walberla::float64 Dummy_90 = -Dummy_75 - Dummy_85;
+       const walberla::float64 Dummy_91 = Dummy_68*Dummy_88 + Dummy_71*Dummy_89 + Dummy_74*Dummy_90;
+       const walberla::float64 Dummy_92 = jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0;
+       const walberla::float64 Dummy_93 = -Dummy_69*Dummy_70 - Dummy_72*Dummy_73 - Dummy_75*Dummy_76;
+       const walberla::float64 Dummy_94 = -Dummy_69*Dummy_80 - Dummy_72*Dummy_83 - Dummy_75*Dummy_86;
+       const walberla::float64 Dummy_95 = -Dummy_69*Dummy_88 - Dummy_72*Dummy_89 - Dummy_75*Dummy_90;
+       const walberla::float64 Dummy_96 = Dummy_70*Dummy_78 + Dummy_73*Dummy_81 + Dummy_76*Dummy_84;
+       const walberla::float64 Dummy_97 = Dummy_78*Dummy_80 + Dummy_81*Dummy_83 + Dummy_84*Dummy_86;
+       const walberla::float64 Dummy_98 = Dummy_78*Dummy_88 + Dummy_81*Dummy_89 + Dummy_84*Dummy_90;
+       const walberla::float64 Dummy_99 = Dummy_70*Dummy_80 + Dummy_73*Dummy_83 + Dummy_76*Dummy_86;
+       const walberla::float64 Dummy_100 = Dummy_70*Dummy_88 + Dummy_73*Dummy_89 + Dummy_76*Dummy_90;
+       const walberla::float64 Dummy_101 = Dummy_80*Dummy_88 + Dummy_83*Dummy_89 + Dummy_86*Dummy_90;
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -403,18 +403,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
-                const __m256d tmp_5_BLUE_UP = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d tmp_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d tmp_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP),_mm256_set_pd(jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP),_mm256_set_pd(jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP),_mm256_set_pd(jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP))))),_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_68,Dummy_68,Dummy_68,Dummy_68))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_78,Dummy_78,Dummy_78,Dummy_78))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_88,Dummy_88,Dummy_88,Dummy_88))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_92,Dummy_92,Dummy_92,Dummy_92)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP),_mm256_set_pd(jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP),_mm256_set_pd(jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP),_mm256_set_pd(jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP))))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_93,Dummy_93,Dummy_93,Dummy_93))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_94,Dummy_94,Dummy_94,Dummy_94))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_95,Dummy_95,Dummy_95,Dummy_95))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_96,Dummy_96,Dummy_96,Dummy_96)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP),_mm256_set_pd(jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP),_mm256_set_pd(jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP),_mm256_set_pd(jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP))))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_68,Dummy_68,Dummy_68,Dummy_68))),_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_set_pd(Dummy_93,Dummy_93,Dummy_93,Dummy_93))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_97,Dummy_97,Dummy_97,Dummy_97))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_98,Dummy_98,Dummy_98,Dummy_98))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_99,Dummy_99,Dummy_99,Dummy_99)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_71,Dummy_71,Dummy_71,Dummy_71),_mm256_set_pd(Dummy_71,Dummy_71,Dummy_71,Dummy_71)),_mm256_mul_pd(_mm256_set_pd(Dummy_74,Dummy_74,Dummy_74,Dummy_74),_mm256_set_pd(Dummy_74,Dummy_74,Dummy_74,Dummy_74))),_mm256_mul_pd(_mm256_set_pd(Dummy_77,Dummy_77,Dummy_77,Dummy_77),_mm256_set_pd(Dummy_77,Dummy_77,Dummy_77,Dummy_77)))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_100,Dummy_100,Dummy_100,Dummy_100))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_101,Dummy_101,Dummy_101,Dummy_101))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_78,Dummy_78,Dummy_78,Dummy_78))),_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_set_pd(Dummy_94,Dummy_94,Dummy_94,Dummy_94))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_97,Dummy_97,Dummy_97,Dummy_97)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_81,Dummy_81,Dummy_81,Dummy_81),_mm256_set_pd(Dummy_81,Dummy_81,Dummy_81,Dummy_81)),_mm256_mul_pd(_mm256_set_pd(Dummy_84,Dummy_84,Dummy_84,Dummy_84),_mm256_set_pd(Dummy_84,Dummy_84,Dummy_84,Dummy_84))),_mm256_mul_pd(_mm256_set_pd(Dummy_87,Dummy_87,Dummy_87,Dummy_87),_mm256_set_pd(Dummy_87,Dummy_87,Dummy_87,Dummy_87)))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_100,Dummy_100,Dummy_100,Dummy_100))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_102,Dummy_102,Dummy_102,Dummy_102))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_88,Dummy_88,Dummy_88,Dummy_88))),_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_set_pd(Dummy_95,Dummy_95,Dummy_95,Dummy_95))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_98,Dummy_98,Dummy_98,Dummy_98)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_89,Dummy_89,Dummy_89,Dummy_89),_mm256_set_pd(Dummy_89,Dummy_89,Dummy_89,Dummy_89)),_mm256_mul_pd(_mm256_set_pd(Dummy_90,Dummy_90,Dummy_90,Dummy_90),_mm256_set_pd(Dummy_90,Dummy_90,Dummy_90,Dummy_90))),_mm256_mul_pd(_mm256_set_pd(Dummy_91,Dummy_91,Dummy_91,Dummy_91),_mm256_set_pd(Dummy_91,Dummy_91,Dummy_91,Dummy_91)))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_101,Dummy_101,Dummy_101,Dummy_101))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_102,Dummy_102,Dummy_102,Dummy_102))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_92,Dummy_92,Dummy_92,Dummy_92))),_mm256_mul_pd(tmp_5_BLUE_UP,_mm256_set_pd(Dummy_96,Dummy_96,Dummy_96,Dummy_96))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_99,Dummy_99,Dummy_99,Dummy_99)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_66,Dummy_66,Dummy_66,Dummy_66));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP),_mm256_set_pd(jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP,jac_affine_0_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP),_mm256_set_pd(jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP,jac_affine_1_0_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP),_mm256_set_pd(jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP,jac_affine_2_0_BLUE_UP))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_65,Dummy_65,Dummy_65,Dummy_65))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_77,Dummy_77,Dummy_77,Dummy_77))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_87,Dummy_87,Dummy_87,Dummy_87))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_91,Dummy_91,Dummy_91,Dummy_91)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP),_mm256_set_pd(jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP,jac_affine_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP),_mm256_set_pd(jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP,jac_affine_1_1_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP),_mm256_set_pd(jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP,jac_affine_2_1_BLUE_UP))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_65,Dummy_65,Dummy_65,Dummy_65))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_92,Dummy_92,Dummy_92,Dummy_92))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_93,Dummy_93,Dummy_93,Dummy_93))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_94,Dummy_94,Dummy_94,Dummy_94))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_95,Dummy_95,Dummy_95,Dummy_95)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP),_mm256_set_pd(jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP,jac_affine_0_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP),_mm256_set_pd(jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP,jac_affine_1_2_BLUE_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP),_mm256_set_pd(jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP,jac_affine_2_2_BLUE_UP))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_67,Dummy_67,Dummy_67,Dummy_67))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_92,Dummy_92,Dummy_92,Dummy_92))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_96,Dummy_96,Dummy_96,Dummy_96))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_97,Dummy_97,Dummy_97,Dummy_97))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_98,Dummy_98,Dummy_98,Dummy_98)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_70,Dummy_70,Dummy_70,Dummy_70),_mm256_set_pd(Dummy_70,Dummy_70,Dummy_70,Dummy_70)),_mm256_mul_pd(_mm256_set_pd(Dummy_73,Dummy_73,Dummy_73,Dummy_73),_mm256_set_pd(Dummy_73,Dummy_73,Dummy_73,Dummy_73))),_mm256_mul_pd(_mm256_set_pd(Dummy_76,Dummy_76,Dummy_76,Dummy_76),_mm256_set_pd(Dummy_76,Dummy_76,Dummy_76,Dummy_76)))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_100,Dummy_100,Dummy_100,Dummy_100))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_77,Dummy_77,Dummy_77,Dummy_77))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_93,Dummy_93,Dummy_93,Dummy_93))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_96,Dummy_96,Dummy_96,Dummy_96))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_99,Dummy_99,Dummy_99,Dummy_99)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_80,Dummy_80,Dummy_80,Dummy_80),_mm256_set_pd(Dummy_80,Dummy_80,Dummy_80,Dummy_80)),_mm256_mul_pd(_mm256_set_pd(Dummy_83,Dummy_83,Dummy_83,Dummy_83),_mm256_set_pd(Dummy_83,Dummy_83,Dummy_83,Dummy_83))),_mm256_mul_pd(_mm256_set_pd(Dummy_86,Dummy_86,Dummy_86,Dummy_86),_mm256_set_pd(Dummy_86,Dummy_86,Dummy_86,Dummy_86)))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_101,Dummy_101,Dummy_101,Dummy_101))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_87,Dummy_87,Dummy_87,Dummy_87))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_94,Dummy_94,Dummy_94,Dummy_94))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_97,Dummy_97,Dummy_97,Dummy_97))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_99,Dummy_99,Dummy_99,Dummy_99)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_88,Dummy_88,Dummy_88,Dummy_88),_mm256_set_pd(Dummy_88,Dummy_88,Dummy_88,Dummy_88)),_mm256_mul_pd(_mm256_set_pd(Dummy_89,Dummy_89,Dummy_89,Dummy_89),_mm256_set_pd(Dummy_89,Dummy_89,Dummy_89,Dummy_89))),_mm256_mul_pd(_mm256_set_pd(Dummy_90,Dummy_90,Dummy_90,Dummy_90),_mm256_set_pd(Dummy_90,Dummy_90,Dummy_90,Dummy_90)))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_100,Dummy_100,Dummy_100,Dummy_100))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_101,Dummy_101,Dummy_101,Dummy_101))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_91,Dummy_91,Dummy_91,Dummy_91))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_95,Dummy_95,Dummy_95,Dummy_95))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_98,Dummy_98,Dummy_98,Dummy_98)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
@@ -424,24 +424,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t tmp_5_BLUE_UP = Dummy_67*src_dof_1;
-                const real_t tmp_7 = Dummy_67*src_dof_2;
-                const real_t tmp_8 = Dummy_67*src_dof_0;
-                const real_t tmp_19 = Dummy_67*src_dof_3;
-                const real_t tmp_30 = Dummy_67*src_dof_4;
-                const real_t tmp_35 = Dummy_67*src_dof_5;
-                const real_t elMatVec_0 = Dummy_66*tmp_5_BLUE_UP + Dummy_68*tmp_7 + Dummy_78*tmp_19 + Dummy_88*tmp_30 + Dummy_92*tmp_35 + tmp_8*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
-                const real_t elMatVec_1 = Dummy_66*tmp_8 + Dummy_93*tmp_7 + Dummy_94*tmp_19 + Dummy_95*tmp_30 + Dummy_96*tmp_35 + tmp_5_BLUE_UP*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
-                const real_t elMatVec_2 = Dummy_68*tmp_8 + Dummy_93*tmp_5_BLUE_UP + Dummy_97*tmp_19 + Dummy_98*tmp_30 + Dummy_99*tmp_35 + tmp_7*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
-                const real_t elMatVec_3 = Dummy_100*tmp_30 + Dummy_101*tmp_35 + Dummy_78*tmp_8 + Dummy_94*tmp_5_BLUE_UP + Dummy_97*tmp_7 + tmp_19*((Dummy_71*Dummy_71) + (Dummy_74*Dummy_74) + (Dummy_77*Dummy_77));
-                const real_t elMatVec_4 = Dummy_100*tmp_19 + Dummy_102*tmp_35 + Dummy_88*tmp_8 + Dummy_95*tmp_5_BLUE_UP + Dummy_98*tmp_7 + tmp_30*((Dummy_81*Dummy_81) + (Dummy_84*Dummy_84) + (Dummy_87*Dummy_87));
-                const real_t elMatVec_5 = Dummy_101*tmp_19 + Dummy_102*tmp_30 + Dummy_92*tmp_8 + Dummy_96*tmp_5_BLUE_UP + Dummy_99*tmp_7 + tmp_35*((Dummy_89*Dummy_89) + (Dummy_90*Dummy_90) + (Dummy_91*Dummy_91));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 tmp_kernel_op_5 = Dummy_66*src_dof_1;
+                const walberla::float64 tmp_kernel_op_7 = Dummy_66*src_dof_2;
+                const walberla::float64 tmp_kernel_op_8 = Dummy_66*src_dof_0;
+                const walberla::float64 tmp_kernel_op_19 = Dummy_66*src_dof_3;
+                const walberla::float64 tmp_kernel_op_30 = Dummy_66*src_dof_4;
+                const walberla::float64 tmp_kernel_op_35 = Dummy_66*src_dof_5;
+                const walberla::float64 elMatVec_0 = Dummy_65*tmp_kernel_op_5 + Dummy_67*tmp_kernel_op_7 + Dummy_77*tmp_kernel_op_19 + Dummy_87*tmp_kernel_op_30 + Dummy_91*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
+                const walberla::float64 elMatVec_1 = Dummy_65*tmp_kernel_op_8 + Dummy_92*tmp_kernel_op_7 + Dummy_93*tmp_kernel_op_19 + Dummy_94*tmp_kernel_op_30 + Dummy_95*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
+                const walberla::float64 elMatVec_2 = Dummy_67*tmp_kernel_op_8 + Dummy_92*tmp_kernel_op_5 + Dummy_96*tmp_kernel_op_19 + Dummy_97*tmp_kernel_op_30 + Dummy_98*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
+                const walberla::float64 elMatVec_3 = Dummy_100*tmp_kernel_op_35 + Dummy_77*tmp_kernel_op_8 + Dummy_93*tmp_kernel_op_5 + Dummy_96*tmp_kernel_op_7 + Dummy_99*tmp_kernel_op_30 + tmp_kernel_op_19*((Dummy_70*Dummy_70) + (Dummy_73*Dummy_73) + (Dummy_76*Dummy_76));
+                const walberla::float64 elMatVec_4 = Dummy_101*tmp_kernel_op_35 + Dummy_87*tmp_kernel_op_8 + Dummy_94*tmp_kernel_op_5 + Dummy_97*tmp_kernel_op_7 + Dummy_99*tmp_kernel_op_19 + tmp_kernel_op_30*((Dummy_80*Dummy_80) + (Dummy_83*Dummy_83) + (Dummy_86*Dummy_86));
+                const walberla::float64 elMatVec_5 = Dummy_100*tmp_kernel_op_19 + Dummy_101*tmp_kernel_op_30 + Dummy_91*tmp_kernel_op_8 + Dummy_95*tmp_kernel_op_5 + Dummy_98*tmp_kernel_op_7 + tmp_kernel_op_35*((Dummy_88*Dummy_88) + (Dummy_89*Dummy_89) + (Dummy_90*Dummy_90));
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -451,78 +451,78 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t Dummy_103 = jac_affine_0_0_BLUE_DOWN*4.0;
-       const real_t Dummy_104 = jac_affine_1_0_BLUE_DOWN*4.0;
-       const real_t Dummy_105 = jac_affine_2_0_BLUE_DOWN*4.0;
-       const real_t Dummy_106 = -Dummy_103*jac_affine_0_1_BLUE_DOWN - Dummy_104*jac_affine_1_1_BLUE_DOWN - Dummy_105*jac_affine_2_1_BLUE_DOWN;
-       const real_t Dummy_107 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666666;
-       const real_t Dummy_108 = Dummy_103*jac_affine_0_2_BLUE_DOWN + Dummy_104*jac_affine_1_2_BLUE_DOWN + Dummy_105*jac_affine_2_2_BLUE_DOWN;
-       const real_t Dummy_109 = jac_affine_0_0_BLUE_DOWN*2.0;
-       const real_t Dummy_110 = jac_affine_0_1_BLUE_DOWN*2.0;
-       const real_t Dummy_111 = -Dummy_109 + Dummy_110;
-       const real_t Dummy_112 = jac_affine_1_0_BLUE_DOWN*2.0;
-       const real_t Dummy_113 = jac_affine_1_1_BLUE_DOWN*2.0;
-       const real_t Dummy_114 = -Dummy_112 + Dummy_113;
-       const real_t Dummy_115 = jac_affine_2_0_BLUE_DOWN*2.0;
-       const real_t Dummy_116 = jac_affine_2_1_BLUE_DOWN*2.0;
-       const real_t Dummy_117 = -Dummy_115 + Dummy_116;
-       const real_t Dummy_118 = Dummy_109*Dummy_111 + Dummy_112*Dummy_114 + Dummy_115*Dummy_117;
-       const real_t Dummy_119 = jac_affine_0_2_BLUE_DOWN*2.0;
-       const real_t Dummy_120 = -Dummy_119;
-       const real_t Dummy_121 = Dummy_109 + Dummy_120;
-       const real_t Dummy_122 = jac_affine_1_2_BLUE_DOWN*2.0;
-       const real_t Dummy_123 = -Dummy_122;
-       const real_t Dummy_124 = Dummy_112 + Dummy_123;
-       const real_t Dummy_125 = jac_affine_2_2_BLUE_DOWN*2.0;
-       const real_t Dummy_126 = -Dummy_125;
-       const real_t Dummy_127 = Dummy_115 + Dummy_126;
-       const real_t Dummy_128 = Dummy_109*Dummy_121 + Dummy_112*Dummy_124 + Dummy_115*Dummy_127;
-       const real_t Dummy_129 = -Dummy_110 - Dummy_120;
-       const real_t Dummy_130 = -Dummy_113 - Dummy_123;
-       const real_t Dummy_131 = -Dummy_116 - Dummy_126;
-       const real_t Dummy_132 = Dummy_109*Dummy_129 + Dummy_112*Dummy_130 + Dummy_115*Dummy_131;
-       const real_t Dummy_133 = jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0;
-       const real_t Dummy_134 = -Dummy_110*Dummy_111 - Dummy_113*Dummy_114 - Dummy_116*Dummy_117;
-       const real_t Dummy_135 = -Dummy_110*Dummy_121 - Dummy_113*Dummy_124 - Dummy_116*Dummy_127;
-       const real_t Dummy_136 = -Dummy_110*Dummy_129 - Dummy_113*Dummy_130 - Dummy_116*Dummy_131;
-       const real_t Dummy_137 = Dummy_111*Dummy_119 + Dummy_114*Dummy_122 + Dummy_117*Dummy_125;
-       const real_t Dummy_138 = Dummy_119*Dummy_121 + Dummy_122*Dummy_124 + Dummy_125*Dummy_127;
-       const real_t Dummy_139 = Dummy_119*Dummy_129 + Dummy_122*Dummy_130 + Dummy_125*Dummy_131;
-       const real_t Dummy_140 = Dummy_111*Dummy_121 + Dummy_114*Dummy_124 + Dummy_117*Dummy_127;
-       const real_t Dummy_141 = Dummy_111*Dummy_129 + Dummy_114*Dummy_130 + Dummy_117*Dummy_131;
-       const real_t Dummy_142 = Dummy_121*Dummy_129 + Dummy_124*Dummy_130 + Dummy_127*Dummy_131;
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 Dummy_102 = jac_affine_0_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_103 = jac_affine_1_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_104 = jac_affine_2_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_105 = -Dummy_102*jac_affine_0_1_BLUE_DOWN - Dummy_103*jac_affine_1_1_BLUE_DOWN - Dummy_104*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_106 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_107 = Dummy_102*jac_affine_0_2_BLUE_DOWN + Dummy_103*jac_affine_1_2_BLUE_DOWN + Dummy_104*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_108 = jac_affine_0_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_109 = jac_affine_0_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_110 = -Dummy_108 + Dummy_109;
+       const walberla::float64 Dummy_111 = jac_affine_1_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_112 = jac_affine_1_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_113 = -Dummy_111 + Dummy_112;
+       const walberla::float64 Dummy_114 = jac_affine_2_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_115 = jac_affine_2_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_116 = -Dummy_114 + Dummy_115;
+       const walberla::float64 Dummy_117 = Dummy_108*Dummy_110 + Dummy_111*Dummy_113 + Dummy_114*Dummy_116;
+       const walberla::float64 Dummy_118 = jac_affine_0_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_119 = -Dummy_118;
+       const walberla::float64 Dummy_120 = Dummy_108 + Dummy_119;
+       const walberla::float64 Dummy_121 = jac_affine_1_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_122 = -Dummy_121;
+       const walberla::float64 Dummy_123 = Dummy_111 + Dummy_122;
+       const walberla::float64 Dummy_124 = jac_affine_2_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_125 = -Dummy_124;
+       const walberla::float64 Dummy_126 = Dummy_114 + Dummy_125;
+       const walberla::float64 Dummy_127 = Dummy_108*Dummy_120 + Dummy_111*Dummy_123 + Dummy_114*Dummy_126;
+       const walberla::float64 Dummy_128 = -Dummy_109 - Dummy_119;
+       const walberla::float64 Dummy_129 = -Dummy_112 - Dummy_122;
+       const walberla::float64 Dummy_130 = -Dummy_115 - Dummy_125;
+       const walberla::float64 Dummy_131 = Dummy_108*Dummy_128 + Dummy_111*Dummy_129 + Dummy_114*Dummy_130;
+       const walberla::float64 Dummy_132 = jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0;
+       const walberla::float64 Dummy_133 = -Dummy_109*Dummy_110 - Dummy_112*Dummy_113 - Dummy_115*Dummy_116;
+       const walberla::float64 Dummy_134 = -Dummy_109*Dummy_120 - Dummy_112*Dummy_123 - Dummy_115*Dummy_126;
+       const walberla::float64 Dummy_135 = -Dummy_109*Dummy_128 - Dummy_112*Dummy_129 - Dummy_115*Dummy_130;
+       const walberla::float64 Dummy_136 = Dummy_110*Dummy_118 + Dummy_113*Dummy_121 + Dummy_116*Dummy_124;
+       const walberla::float64 Dummy_137 = Dummy_118*Dummy_120 + Dummy_121*Dummy_123 + Dummy_124*Dummy_126;
+       const walberla::float64 Dummy_138 = Dummy_118*Dummy_128 + Dummy_121*Dummy_129 + Dummy_124*Dummy_130;
+       const walberla::float64 Dummy_139 = Dummy_110*Dummy_120 + Dummy_113*Dummy_123 + Dummy_116*Dummy_126;
+       const walberla::float64 Dummy_140 = Dummy_110*Dummy_128 + Dummy_113*Dummy_129 + Dummy_116*Dummy_130;
+       const walberla::float64 Dummy_141 = Dummy_120*Dummy_128 + Dummy_123*Dummy_129 + Dummy_126*Dummy_130;
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -536,18 +536,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
-                const __m256d tmp_5_BLUE_DOWN = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d tmp_7_BLUE_DOWN = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d tmp_8_BLUE_DOWN = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN))))),_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106))),_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_set_pd(Dummy_108,Dummy_108,Dummy_108,Dummy_108))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_118,Dummy_118,Dummy_118,Dummy_118))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_128,Dummy_128,Dummy_128,Dummy_128))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_132,Dummy_132,Dummy_132,Dummy_132)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN))))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106))),_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_set_pd(Dummy_133,Dummy_133,Dummy_133,Dummy_133))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_134,Dummy_134,Dummy_134,Dummy_134))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_135,Dummy_135,Dummy_135,Dummy_135))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_136,Dummy_136,Dummy_136,Dummy_136)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN))))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_108,Dummy_108,Dummy_108,Dummy_108))),_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_set_pd(Dummy_133,Dummy_133,Dummy_133,Dummy_133))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_137,Dummy_137,Dummy_137,Dummy_137))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_138,Dummy_138,Dummy_138,Dummy_138))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_139,Dummy_139,Dummy_139,Dummy_139)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_111,Dummy_111,Dummy_111,Dummy_111),_mm256_set_pd(Dummy_111,Dummy_111,Dummy_111,Dummy_111)),_mm256_mul_pd(_mm256_set_pd(Dummy_114,Dummy_114,Dummy_114,Dummy_114),_mm256_set_pd(Dummy_114,Dummy_114,Dummy_114,Dummy_114))),_mm256_mul_pd(_mm256_set_pd(Dummy_117,Dummy_117,Dummy_117,Dummy_117),_mm256_set_pd(Dummy_117,Dummy_117,Dummy_117,Dummy_117)))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_118,Dummy_118,Dummy_118,Dummy_118))),_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_set_pd(Dummy_134,Dummy_134,Dummy_134,Dummy_134))),_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_set_pd(Dummy_137,Dummy_137,Dummy_137,Dummy_137))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_140,Dummy_140,Dummy_140,Dummy_140))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_141,Dummy_141,Dummy_141,Dummy_141)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_121,Dummy_121,Dummy_121,Dummy_121),_mm256_set_pd(Dummy_121,Dummy_121,Dummy_121,Dummy_121)),_mm256_mul_pd(_mm256_set_pd(Dummy_124,Dummy_124,Dummy_124,Dummy_124),_mm256_set_pd(Dummy_124,Dummy_124,Dummy_124,Dummy_124))),_mm256_mul_pd(_mm256_set_pd(Dummy_127,Dummy_127,Dummy_127,Dummy_127),_mm256_set_pd(Dummy_127,Dummy_127,Dummy_127,Dummy_127)))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_128,Dummy_128,Dummy_128,Dummy_128))),_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_set_pd(Dummy_135,Dummy_135,Dummy_135,Dummy_135))),_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_set_pd(Dummy_138,Dummy_138,Dummy_138,Dummy_138))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_140,Dummy_140,Dummy_140,Dummy_140))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_142,Dummy_142,Dummy_142,Dummy_142)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_129,Dummy_129,Dummy_129,Dummy_129),_mm256_set_pd(Dummy_129,Dummy_129,Dummy_129,Dummy_129)),_mm256_mul_pd(_mm256_set_pd(Dummy_130,Dummy_130,Dummy_130,Dummy_130),_mm256_set_pd(Dummy_130,Dummy_130,Dummy_130,Dummy_130))),_mm256_mul_pd(_mm256_set_pd(Dummy_131,Dummy_131,Dummy_131,Dummy_131),_mm256_set_pd(Dummy_131,Dummy_131,Dummy_131,Dummy_131)))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_132,Dummy_132,Dummy_132,Dummy_132))),_mm256_mul_pd(tmp_5_BLUE_DOWN,_mm256_set_pd(Dummy_136,Dummy_136,Dummy_136,Dummy_136))),_mm256_mul_pd(tmp_7_BLUE_DOWN,_mm256_set_pd(Dummy_139,Dummy_139,Dummy_139,Dummy_139))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_141,Dummy_141,Dummy_141,Dummy_141))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_142,Dummy_142,Dummy_142,Dummy_142)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_106,Dummy_106,Dummy_106,Dummy_106));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN,jac_affine_0_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN,jac_affine_1_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN,jac_affine_2_0_BLUE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_105,Dummy_105,Dummy_105,Dummy_105))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_117,Dummy_117,Dummy_117,Dummy_117))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_127,Dummy_127,Dummy_127,Dummy_127))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_131,Dummy_131,Dummy_131,Dummy_131)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN,jac_affine_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN,jac_affine_1_1_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN,jac_affine_2_1_BLUE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_105,Dummy_105,Dummy_105,Dummy_105))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_132,Dummy_132,Dummy_132,Dummy_132))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_133,Dummy_133,Dummy_133,Dummy_133))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_134,Dummy_134,Dummy_134,Dummy_134))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_135,Dummy_135,Dummy_135,Dummy_135)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN,jac_affine_0_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN,jac_affine_1_2_BLUE_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN,jac_affine_2_2_BLUE_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_107,Dummy_107,Dummy_107,Dummy_107))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_132,Dummy_132,Dummy_132,Dummy_132))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_136,Dummy_136,Dummy_136,Dummy_136))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_137,Dummy_137,Dummy_137,Dummy_137))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_138,Dummy_138,Dummy_138,Dummy_138)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_110,Dummy_110,Dummy_110,Dummy_110),_mm256_set_pd(Dummy_110,Dummy_110,Dummy_110,Dummy_110)),_mm256_mul_pd(_mm256_set_pd(Dummy_113,Dummy_113,Dummy_113,Dummy_113),_mm256_set_pd(Dummy_113,Dummy_113,Dummy_113,Dummy_113))),_mm256_mul_pd(_mm256_set_pd(Dummy_116,Dummy_116,Dummy_116,Dummy_116),_mm256_set_pd(Dummy_116,Dummy_116,Dummy_116,Dummy_116)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_117,Dummy_117,Dummy_117,Dummy_117))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_133,Dummy_133,Dummy_133,Dummy_133))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_136,Dummy_136,Dummy_136,Dummy_136))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_139,Dummy_139,Dummy_139,Dummy_139))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_140,Dummy_140,Dummy_140,Dummy_140)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_120,Dummy_120,Dummy_120,Dummy_120),_mm256_set_pd(Dummy_120,Dummy_120,Dummy_120,Dummy_120)),_mm256_mul_pd(_mm256_set_pd(Dummy_123,Dummy_123,Dummy_123,Dummy_123),_mm256_set_pd(Dummy_123,Dummy_123,Dummy_123,Dummy_123))),_mm256_mul_pd(_mm256_set_pd(Dummy_126,Dummy_126,Dummy_126,Dummy_126),_mm256_set_pd(Dummy_126,Dummy_126,Dummy_126,Dummy_126)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_127,Dummy_127,Dummy_127,Dummy_127))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_134,Dummy_134,Dummy_134,Dummy_134))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_137,Dummy_137,Dummy_137,Dummy_137))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_139,Dummy_139,Dummy_139,Dummy_139))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_141,Dummy_141,Dummy_141,Dummy_141)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_128,Dummy_128,Dummy_128,Dummy_128),_mm256_set_pd(Dummy_128,Dummy_128,Dummy_128,Dummy_128)),_mm256_mul_pd(_mm256_set_pd(Dummy_129,Dummy_129,Dummy_129,Dummy_129),_mm256_set_pd(Dummy_129,Dummy_129,Dummy_129,Dummy_129))),_mm256_mul_pd(_mm256_set_pd(Dummy_130,Dummy_130,Dummy_130,Dummy_130),_mm256_set_pd(Dummy_130,Dummy_130,Dummy_130,Dummy_130)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_131,Dummy_131,Dummy_131,Dummy_131))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_135,Dummy_135,Dummy_135,Dummy_135))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_138,Dummy_138,Dummy_138,Dummy_138))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_140,Dummy_140,Dummy_140,Dummy_140))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_141,Dummy_141,Dummy_141,Dummy_141)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
@@ -557,24 +557,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t tmp_5_BLUE_DOWN = Dummy_107*src_dof_1;
-                const real_t tmp_7_BLUE_DOWN = Dummy_107*src_dof_2;
-                const real_t tmp_8_BLUE_DOWN = Dummy_107*src_dof_0;
-                const real_t tmp_19 = Dummy_107*src_dof_3;
-                const real_t tmp_30 = Dummy_107*src_dof_4;
-                const real_t tmp_35 = Dummy_107*src_dof_5;
-                const real_t elMatVec_0 = Dummy_106*tmp_5_BLUE_DOWN + Dummy_108*tmp_7_BLUE_DOWN + Dummy_118*tmp_19 + Dummy_128*tmp_30 + Dummy_132*tmp_35 + tmp_8_BLUE_DOWN*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
-                const real_t elMatVec_1 = Dummy_106*tmp_8_BLUE_DOWN + Dummy_133*tmp_7_BLUE_DOWN + Dummy_134*tmp_19 + Dummy_135*tmp_30 + Dummy_136*tmp_35 + tmp_5_BLUE_DOWN*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
-                const real_t elMatVec_2 = Dummy_108*tmp_8_BLUE_DOWN + Dummy_133*tmp_5_BLUE_DOWN + Dummy_137*tmp_19 + Dummy_138*tmp_30 + Dummy_139*tmp_35 + tmp_7_BLUE_DOWN*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
-                const real_t elMatVec_3 = Dummy_118*tmp_8_BLUE_DOWN + Dummy_134*tmp_5_BLUE_DOWN + Dummy_137*tmp_7_BLUE_DOWN + Dummy_140*tmp_30 + Dummy_141*tmp_35 + tmp_19*((Dummy_111*Dummy_111) + (Dummy_114*Dummy_114) + (Dummy_117*Dummy_117));
-                const real_t elMatVec_4 = Dummy_128*tmp_8_BLUE_DOWN + Dummy_135*tmp_5_BLUE_DOWN + Dummy_138*tmp_7_BLUE_DOWN + Dummy_140*tmp_19 + Dummy_142*tmp_35 + tmp_30*((Dummy_121*Dummy_121) + (Dummy_124*Dummy_124) + (Dummy_127*Dummy_127));
-                const real_t elMatVec_5 = Dummy_132*tmp_8_BLUE_DOWN + Dummy_136*tmp_5_BLUE_DOWN + Dummy_139*tmp_7_BLUE_DOWN + Dummy_141*tmp_19 + Dummy_142*tmp_30 + tmp_35*((Dummy_129*Dummy_129) + (Dummy_130*Dummy_130) + (Dummy_131*Dummy_131));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 tmp_kernel_op_5 = Dummy_106*src_dof_1;
+                const walberla::float64 tmp_kernel_op_7 = Dummy_106*src_dof_2;
+                const walberla::float64 tmp_kernel_op_8 = Dummy_106*src_dof_0;
+                const walberla::float64 tmp_kernel_op_19 = Dummy_106*src_dof_3;
+                const walberla::float64 tmp_kernel_op_30 = Dummy_106*src_dof_4;
+                const walberla::float64 tmp_kernel_op_35 = Dummy_106*src_dof_5;
+                const walberla::float64 elMatVec_0 = Dummy_105*tmp_kernel_op_5 + Dummy_107*tmp_kernel_op_7 + Dummy_117*tmp_kernel_op_19 + Dummy_127*tmp_kernel_op_30 + Dummy_131*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
+                const walberla::float64 elMatVec_1 = Dummy_105*tmp_kernel_op_8 + Dummy_132*tmp_kernel_op_7 + Dummy_133*tmp_kernel_op_19 + Dummy_134*tmp_kernel_op_30 + Dummy_135*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
+                const walberla::float64 elMatVec_2 = Dummy_107*tmp_kernel_op_8 + Dummy_132*tmp_kernel_op_5 + Dummy_136*tmp_kernel_op_19 + Dummy_137*tmp_kernel_op_30 + Dummy_138*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
+                const walberla::float64 elMatVec_3 = Dummy_117*tmp_kernel_op_8 + Dummy_133*tmp_kernel_op_5 + Dummy_136*tmp_kernel_op_7 + Dummy_139*tmp_kernel_op_30 + Dummy_140*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_110*Dummy_110) + (Dummy_113*Dummy_113) + (Dummy_116*Dummy_116));
+                const walberla::float64 elMatVec_4 = Dummy_127*tmp_kernel_op_8 + Dummy_134*tmp_kernel_op_5 + Dummy_137*tmp_kernel_op_7 + Dummy_139*tmp_kernel_op_19 + Dummy_141*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_120*Dummy_120) + (Dummy_123*Dummy_123) + (Dummy_126*Dummy_126));
+                const walberla::float64 elMatVec_5 = Dummy_131*tmp_kernel_op_8 + Dummy_135*tmp_kernel_op_5 + Dummy_138*tmp_kernel_op_7 + Dummy_140*tmp_kernel_op_19 + Dummy_141*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_128*Dummy_128) + (Dummy_129*Dummy_129) + (Dummy_130*Dummy_130));
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
@@ -584,75 +584,75 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t Dummy_143 = jac_affine_0_0_GREEN_UP*4.0;
-       const real_t Dummy_144 = jac_affine_1_0_GREEN_UP*4.0;
-       const real_t Dummy_145 = jac_affine_2_0_GREEN_UP*4.0;
-       const real_t Dummy_146 = -Dummy_143*jac_affine_0_1_GREEN_UP - Dummy_144*jac_affine_1_1_GREEN_UP - Dummy_145*jac_affine_2_1_GREEN_UP;
-       const real_t Dummy_147 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666666;
-       const real_t Dummy_148 = Dummy_143*jac_affine_0_2_GREEN_UP + Dummy_144*jac_affine_1_2_GREEN_UP + Dummy_145*jac_affine_2_2_GREEN_UP;
-       const real_t Dummy_149 = jac_affine_0_0_GREEN_UP*2.0;
-       const real_t Dummy_150 = jac_affine_0_1_GREEN_UP*2.0;
-       const real_t Dummy_151 = -Dummy_149 + Dummy_150;
-       const real_t Dummy_152 = jac_affine_1_0_GREEN_UP*2.0;
-       const real_t Dummy_153 = jac_affine_1_1_GREEN_UP*2.0;
-       const real_t Dummy_154 = -Dummy_152 + Dummy_153;
-       const real_t Dummy_155 = jac_affine_2_0_GREEN_UP*2.0;
-       const real_t Dummy_156 = jac_affine_2_1_GREEN_UP*2.0;
-       const real_t Dummy_157 = -Dummy_155 + Dummy_156;
-       const real_t Dummy_158 = Dummy_149*Dummy_151 + Dummy_152*Dummy_154 + Dummy_155*Dummy_157;
-       const real_t Dummy_159 = jac_affine_0_2_GREEN_UP*2.0;
-       const real_t Dummy_160 = -Dummy_159;
-       const real_t Dummy_161 = Dummy_149 + Dummy_160;
-       const real_t Dummy_162 = jac_affine_1_2_GREEN_UP*2.0;
-       const real_t Dummy_163 = -Dummy_162;
-       const real_t Dummy_164 = Dummy_152 + Dummy_163;
-       const real_t Dummy_165 = jac_affine_2_2_GREEN_UP*2.0;
-       const real_t Dummy_166 = -Dummy_165;
-       const real_t Dummy_167 = Dummy_155 + Dummy_166;
-       const real_t Dummy_168 = Dummy_149*Dummy_161 + Dummy_152*Dummy_164 + Dummy_155*Dummy_167;
-       const real_t Dummy_169 = -Dummy_150 - Dummy_160;
-       const real_t Dummy_170 = -Dummy_153 - Dummy_163;
-       const real_t Dummy_171 = -Dummy_156 - Dummy_166;
-       const real_t Dummy_172 = Dummy_149*Dummy_169 + Dummy_152*Dummy_170 + Dummy_155*Dummy_171;
-       const real_t Dummy_173 = jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0;
-       const real_t Dummy_174 = -Dummy_150*Dummy_151 - Dummy_153*Dummy_154 - Dummy_156*Dummy_157;
-       const real_t Dummy_175 = -Dummy_150*Dummy_161 - Dummy_153*Dummy_164 - Dummy_156*Dummy_167;
-       const real_t Dummy_176 = -Dummy_150*Dummy_169 - Dummy_153*Dummy_170 - Dummy_156*Dummy_171;
-       const real_t Dummy_177 = Dummy_151*Dummy_159 + Dummy_154*Dummy_162 + Dummy_157*Dummy_165;
-       const real_t Dummy_178 = Dummy_159*Dummy_161 + Dummy_162*Dummy_164 + Dummy_165*Dummy_167;
-       const real_t Dummy_179 = Dummy_159*Dummy_169 + Dummy_162*Dummy_170 + Dummy_165*Dummy_171;
-       const real_t Dummy_180 = Dummy_151*Dummy_161 + Dummy_154*Dummy_164 + Dummy_157*Dummy_167;
-       const real_t Dummy_181 = Dummy_151*Dummy_169 + Dummy_154*Dummy_170 + Dummy_157*Dummy_171;
-       const real_t Dummy_182 = Dummy_161*Dummy_169 + Dummy_164*Dummy_170 + Dummy_167*Dummy_171;
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 Dummy_142 = jac_affine_0_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_143 = jac_affine_1_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_144 = jac_affine_2_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_145 = -Dummy_142*jac_affine_0_1_GREEN_UP - Dummy_143*jac_affine_1_1_GREEN_UP - Dummy_144*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 Dummy_146 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_147 = Dummy_142*jac_affine_0_2_GREEN_UP + Dummy_143*jac_affine_1_2_GREEN_UP + Dummy_144*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 Dummy_148 = jac_affine_0_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_149 = jac_affine_0_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_150 = -Dummy_148 + Dummy_149;
+       const walberla::float64 Dummy_151 = jac_affine_1_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_152 = jac_affine_1_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_153 = -Dummy_151 + Dummy_152;
+       const walberla::float64 Dummy_154 = jac_affine_2_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_155 = jac_affine_2_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_156 = -Dummy_154 + Dummy_155;
+       const walberla::float64 Dummy_157 = Dummy_148*Dummy_150 + Dummy_151*Dummy_153 + Dummy_154*Dummy_156;
+       const walberla::float64 Dummy_158 = jac_affine_0_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_159 = -Dummy_158;
+       const walberla::float64 Dummy_160 = Dummy_148 + Dummy_159;
+       const walberla::float64 Dummy_161 = jac_affine_1_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_162 = -Dummy_161;
+       const walberla::float64 Dummy_163 = Dummy_151 + Dummy_162;
+       const walberla::float64 Dummy_164 = jac_affine_2_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_165 = -Dummy_164;
+       const walberla::float64 Dummy_166 = Dummy_154 + Dummy_165;
+       const walberla::float64 Dummy_167 = Dummy_148*Dummy_160 + Dummy_151*Dummy_163 + Dummy_154*Dummy_166;
+       const walberla::float64 Dummy_168 = -Dummy_149 - Dummy_159;
+       const walberla::float64 Dummy_169 = -Dummy_152 - Dummy_162;
+       const walberla::float64 Dummy_170 = -Dummy_155 - Dummy_165;
+       const walberla::float64 Dummy_171 = Dummy_148*Dummy_168 + Dummy_151*Dummy_169 + Dummy_154*Dummy_170;
+       const walberla::float64 Dummy_172 = jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0;
+       const walberla::float64 Dummy_173 = -Dummy_149*Dummy_150 - Dummy_152*Dummy_153 - Dummy_155*Dummy_156;
+       const walberla::float64 Dummy_174 = -Dummy_149*Dummy_160 - Dummy_152*Dummy_163 - Dummy_155*Dummy_166;
+       const walberla::float64 Dummy_175 = -Dummy_149*Dummy_168 - Dummy_152*Dummy_169 - Dummy_155*Dummy_170;
+       const walberla::float64 Dummy_176 = Dummy_150*Dummy_158 + Dummy_153*Dummy_161 + Dummy_156*Dummy_164;
+       const walberla::float64 Dummy_177 = Dummy_158*Dummy_160 + Dummy_161*Dummy_163 + Dummy_164*Dummy_166;
+       const walberla::float64 Dummy_178 = Dummy_158*Dummy_168 + Dummy_161*Dummy_169 + Dummy_164*Dummy_170;
+       const walberla::float64 Dummy_179 = Dummy_150*Dummy_160 + Dummy_153*Dummy_163 + Dummy_156*Dummy_166;
+       const walberla::float64 Dummy_180 = Dummy_150*Dummy_168 + Dummy_153*Dummy_169 + Dummy_156*Dummy_170;
+       const walberla::float64 Dummy_181 = Dummy_160*Dummy_168 + Dummy_163*Dummy_169 + Dummy_166*Dummy_170;
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -666,18 +666,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
-                const __m256d tmp_5_GREEN_UP = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d tmp_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d tmp_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP),_mm256_set_pd(jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP),_mm256_set_pd(jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP),_mm256_set_pd(jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP))))),_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_148,Dummy_148,Dummy_148,Dummy_148))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_158,Dummy_158,Dummy_158,Dummy_158))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_168,Dummy_168,Dummy_168,Dummy_168))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_172,Dummy_172,Dummy_172,Dummy_172)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP),_mm256_set_pd(jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP),_mm256_set_pd(jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP),_mm256_set_pd(jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP))))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_173,Dummy_173,Dummy_173,Dummy_173))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_174,Dummy_174,Dummy_174,Dummy_174))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_175,Dummy_175,Dummy_175,Dummy_175))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_176,Dummy_176,Dummy_176,Dummy_176)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP),_mm256_set_pd(jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP),_mm256_set_pd(jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP),_mm256_set_pd(jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP))))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_148,Dummy_148,Dummy_148,Dummy_148))),_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_set_pd(Dummy_173,Dummy_173,Dummy_173,Dummy_173))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_177,Dummy_177,Dummy_177,Dummy_177))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_178,Dummy_178,Dummy_178,Dummy_178))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_179,Dummy_179,Dummy_179,Dummy_179)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_151,Dummy_151,Dummy_151,Dummy_151),_mm256_set_pd(Dummy_151,Dummy_151,Dummy_151,Dummy_151)),_mm256_mul_pd(_mm256_set_pd(Dummy_154,Dummy_154,Dummy_154,Dummy_154),_mm256_set_pd(Dummy_154,Dummy_154,Dummy_154,Dummy_154))),_mm256_mul_pd(_mm256_set_pd(Dummy_157,Dummy_157,Dummy_157,Dummy_157),_mm256_set_pd(Dummy_157,Dummy_157,Dummy_157,Dummy_157)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_158,Dummy_158,Dummy_158,Dummy_158))),_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_set_pd(Dummy_174,Dummy_174,Dummy_174,Dummy_174))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_177,Dummy_177,Dummy_177,Dummy_177))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_180,Dummy_180,Dummy_180,Dummy_180))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_181,Dummy_181,Dummy_181,Dummy_181)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_161,Dummy_161,Dummy_161,Dummy_161),_mm256_set_pd(Dummy_161,Dummy_161,Dummy_161,Dummy_161)),_mm256_mul_pd(_mm256_set_pd(Dummy_164,Dummy_164,Dummy_164,Dummy_164),_mm256_set_pd(Dummy_164,Dummy_164,Dummy_164,Dummy_164))),_mm256_mul_pd(_mm256_set_pd(Dummy_167,Dummy_167,Dummy_167,Dummy_167),_mm256_set_pd(Dummy_167,Dummy_167,Dummy_167,Dummy_167)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_168,Dummy_168,Dummy_168,Dummy_168))),_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_set_pd(Dummy_175,Dummy_175,Dummy_175,Dummy_175))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_178,Dummy_178,Dummy_178,Dummy_178))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_180,Dummy_180,Dummy_180,Dummy_180))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_182,Dummy_182,Dummy_182,Dummy_182)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_169,Dummy_169,Dummy_169,Dummy_169),_mm256_set_pd(Dummy_169,Dummy_169,Dummy_169,Dummy_169)),_mm256_mul_pd(_mm256_set_pd(Dummy_170,Dummy_170,Dummy_170,Dummy_170),_mm256_set_pd(Dummy_170,Dummy_170,Dummy_170,Dummy_170))),_mm256_mul_pd(_mm256_set_pd(Dummy_171,Dummy_171,Dummy_171,Dummy_171),_mm256_set_pd(Dummy_171,Dummy_171,Dummy_171,Dummy_171)))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_172,Dummy_172,Dummy_172,Dummy_172))),_mm256_mul_pd(tmp_5_GREEN_UP,_mm256_set_pd(Dummy_176,Dummy_176,Dummy_176,Dummy_176))),_mm256_mul_pd(tmp_7,_mm256_set_pd(Dummy_179,Dummy_179,Dummy_179,Dummy_179))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_181,Dummy_181,Dummy_181,Dummy_181))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_182,Dummy_182,Dummy_182,Dummy_182)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_146,Dummy_146,Dummy_146,Dummy_146));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP),_mm256_set_pd(jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP,jac_affine_0_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP),_mm256_set_pd(jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP,jac_affine_1_0_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP),_mm256_set_pd(jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP,jac_affine_2_0_GREEN_UP))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_145,Dummy_145,Dummy_145,Dummy_145))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_157,Dummy_157,Dummy_157,Dummy_157))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_167,Dummy_167,Dummy_167,Dummy_167))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_171,Dummy_171,Dummy_171,Dummy_171)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP),_mm256_set_pd(jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP,jac_affine_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP),_mm256_set_pd(jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP,jac_affine_1_1_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP),_mm256_set_pd(jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP,jac_affine_2_1_GREEN_UP))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_145,Dummy_145,Dummy_145,Dummy_145))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_172,Dummy_172,Dummy_172,Dummy_172))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_173,Dummy_173,Dummy_173,Dummy_173))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_174,Dummy_174,Dummy_174,Dummy_174))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_175,Dummy_175,Dummy_175,Dummy_175)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP),_mm256_set_pd(jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP,jac_affine_0_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP),_mm256_set_pd(jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP,jac_affine_1_2_GREEN_UP)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP),_mm256_set_pd(jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP,jac_affine_2_2_GREEN_UP))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_147,Dummy_147,Dummy_147,Dummy_147))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_172,Dummy_172,Dummy_172,Dummy_172))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_176,Dummy_176,Dummy_176,Dummy_176))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_177,Dummy_177,Dummy_177,Dummy_177))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_178,Dummy_178,Dummy_178,Dummy_178)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_150,Dummy_150,Dummy_150,Dummy_150),_mm256_set_pd(Dummy_150,Dummy_150,Dummy_150,Dummy_150)),_mm256_mul_pd(_mm256_set_pd(Dummy_153,Dummy_153,Dummy_153,Dummy_153),_mm256_set_pd(Dummy_153,Dummy_153,Dummy_153,Dummy_153))),_mm256_mul_pd(_mm256_set_pd(Dummy_156,Dummy_156,Dummy_156,Dummy_156),_mm256_set_pd(Dummy_156,Dummy_156,Dummy_156,Dummy_156)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_157,Dummy_157,Dummy_157,Dummy_157))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_173,Dummy_173,Dummy_173,Dummy_173))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_176,Dummy_176,Dummy_176,Dummy_176))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_179,Dummy_179,Dummy_179,Dummy_179))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_180,Dummy_180,Dummy_180,Dummy_180)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_160,Dummy_160,Dummy_160,Dummy_160),_mm256_set_pd(Dummy_160,Dummy_160,Dummy_160,Dummy_160)),_mm256_mul_pd(_mm256_set_pd(Dummy_163,Dummy_163,Dummy_163,Dummy_163),_mm256_set_pd(Dummy_163,Dummy_163,Dummy_163,Dummy_163))),_mm256_mul_pd(_mm256_set_pd(Dummy_166,Dummy_166,Dummy_166,Dummy_166),_mm256_set_pd(Dummy_166,Dummy_166,Dummy_166,Dummy_166)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_167,Dummy_167,Dummy_167,Dummy_167))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_174,Dummy_174,Dummy_174,Dummy_174))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_177,Dummy_177,Dummy_177,Dummy_177))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_179,Dummy_179,Dummy_179,Dummy_179))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_181,Dummy_181,Dummy_181,Dummy_181)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_168,Dummy_168,Dummy_168,Dummy_168),_mm256_set_pd(Dummy_168,Dummy_168,Dummy_168,Dummy_168)),_mm256_mul_pd(_mm256_set_pd(Dummy_169,Dummy_169,Dummy_169,Dummy_169),_mm256_set_pd(Dummy_169,Dummy_169,Dummy_169,Dummy_169))),_mm256_mul_pd(_mm256_set_pd(Dummy_170,Dummy_170,Dummy_170,Dummy_170),_mm256_set_pd(Dummy_170,Dummy_170,Dummy_170,Dummy_170)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_171,Dummy_171,Dummy_171,Dummy_171))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_175,Dummy_175,Dummy_175,Dummy_175))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_178,Dummy_178,Dummy_178,Dummy_178))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_180,Dummy_180,Dummy_180,Dummy_180))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_181,Dummy_181,Dummy_181,Dummy_181)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
@@ -687,24 +687,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t tmp_5_GREEN_UP = Dummy_147*src_dof_1;
-                const real_t tmp_7 = Dummy_147*src_dof_2;
-                const real_t tmp_8 = Dummy_147*src_dof_0;
-                const real_t tmp_19 = Dummy_147*src_dof_3;
-                const real_t tmp_30 = Dummy_147*src_dof_4;
-                const real_t tmp_35 = Dummy_147*src_dof_5;
-                const real_t elMatVec_0 = Dummy_146*tmp_5_GREEN_UP + Dummy_148*tmp_7 + Dummy_158*tmp_19 + Dummy_168*tmp_30 + Dummy_172*tmp_35 + tmp_8*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
-                const real_t elMatVec_1 = Dummy_146*tmp_8 + Dummy_173*tmp_7 + Dummy_174*tmp_19 + Dummy_175*tmp_30 + Dummy_176*tmp_35 + tmp_5_GREEN_UP*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
-                const real_t elMatVec_2 = Dummy_148*tmp_8 + Dummy_173*tmp_5_GREEN_UP + Dummy_177*tmp_19 + Dummy_178*tmp_30 + Dummy_179*tmp_35 + tmp_7*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
-                const real_t elMatVec_3 = Dummy_158*tmp_8 + Dummy_174*tmp_5_GREEN_UP + Dummy_177*tmp_7 + Dummy_180*tmp_30 + Dummy_181*tmp_35 + tmp_19*((Dummy_151*Dummy_151) + (Dummy_154*Dummy_154) + (Dummy_157*Dummy_157));
-                const real_t elMatVec_4 = Dummy_168*tmp_8 + Dummy_175*tmp_5_GREEN_UP + Dummy_178*tmp_7 + Dummy_180*tmp_19 + Dummy_182*tmp_35 + tmp_30*((Dummy_161*Dummy_161) + (Dummy_164*Dummy_164) + (Dummy_167*Dummy_167));
-                const real_t elMatVec_5 = Dummy_172*tmp_8 + Dummy_176*tmp_5_GREEN_UP + Dummy_179*tmp_7 + Dummy_181*tmp_19 + Dummy_182*tmp_30 + tmp_35*((Dummy_169*Dummy_169) + (Dummy_170*Dummy_170) + (Dummy_171*Dummy_171));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 tmp_kernel_op_5 = Dummy_146*src_dof_1;
+                const walberla::float64 tmp_kernel_op_7 = Dummy_146*src_dof_2;
+                const walberla::float64 tmp_kernel_op_8 = Dummy_146*src_dof_0;
+                const walberla::float64 tmp_kernel_op_19 = Dummy_146*src_dof_3;
+                const walberla::float64 tmp_kernel_op_30 = Dummy_146*src_dof_4;
+                const walberla::float64 tmp_kernel_op_35 = Dummy_146*src_dof_5;
+                const walberla::float64 elMatVec_0 = Dummy_145*tmp_kernel_op_5 + Dummy_147*tmp_kernel_op_7 + Dummy_157*tmp_kernel_op_19 + Dummy_167*tmp_kernel_op_30 + Dummy_171*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
+                const walberla::float64 elMatVec_1 = Dummy_145*tmp_kernel_op_8 + Dummy_172*tmp_kernel_op_7 + Dummy_173*tmp_kernel_op_19 + Dummy_174*tmp_kernel_op_30 + Dummy_175*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
+                const walberla::float64 elMatVec_2 = Dummy_147*tmp_kernel_op_8 + Dummy_172*tmp_kernel_op_5 + Dummy_176*tmp_kernel_op_19 + Dummy_177*tmp_kernel_op_30 + Dummy_178*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
+                const walberla::float64 elMatVec_3 = Dummy_157*tmp_kernel_op_8 + Dummy_173*tmp_kernel_op_5 + Dummy_176*tmp_kernel_op_7 + Dummy_179*tmp_kernel_op_30 + Dummy_180*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_150*Dummy_150) + (Dummy_153*Dummy_153) + (Dummy_156*Dummy_156));
+                const walberla::float64 elMatVec_4 = Dummy_167*tmp_kernel_op_8 + Dummy_174*tmp_kernel_op_5 + Dummy_177*tmp_kernel_op_7 + Dummy_179*tmp_kernel_op_19 + Dummy_181*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_160*Dummy_160) + (Dummy_163*Dummy_163) + (Dummy_166*Dummy_166));
+                const walberla::float64 elMatVec_5 = Dummy_171*tmp_kernel_op_8 + Dummy_175*tmp_kernel_op_5 + Dummy_178*tmp_kernel_op_7 + Dummy_180*tmp_kernel_op_19 + Dummy_181*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_168*Dummy_168) + (Dummy_169*Dummy_169) + (Dummy_170*Dummy_170));
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -714,78 +714,78 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t Dummy_183 = jac_affine_0_0_GREEN_DOWN*4.0;
-       const real_t Dummy_184 = jac_affine_1_0_GREEN_DOWN*4.0;
-       const real_t Dummy_185 = jac_affine_2_0_GREEN_DOWN*4.0;
-       const real_t Dummy_186 = -Dummy_183*jac_affine_0_1_GREEN_DOWN - Dummy_184*jac_affine_1_1_GREEN_DOWN - Dummy_185*jac_affine_2_1_GREEN_DOWN;
-       const real_t Dummy_187 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666666;
-       const real_t Dummy_188 = Dummy_183*jac_affine_0_2_GREEN_DOWN + Dummy_184*jac_affine_1_2_GREEN_DOWN + Dummy_185*jac_affine_2_2_GREEN_DOWN;
-       const real_t Dummy_189 = jac_affine_0_0_GREEN_DOWN*2.0;
-       const real_t Dummy_190 = jac_affine_0_1_GREEN_DOWN*2.0;
-       const real_t Dummy_191 = -Dummy_189 + Dummy_190;
-       const real_t Dummy_192 = jac_affine_1_0_GREEN_DOWN*2.0;
-       const real_t Dummy_193 = jac_affine_1_1_GREEN_DOWN*2.0;
-       const real_t Dummy_194 = -Dummy_192 + Dummy_193;
-       const real_t Dummy_195 = jac_affine_2_0_GREEN_DOWN*2.0;
-       const real_t Dummy_196 = jac_affine_2_1_GREEN_DOWN*2.0;
-       const real_t Dummy_197 = -Dummy_195 + Dummy_196;
-       const real_t Dummy_198 = Dummy_189*Dummy_191 + Dummy_192*Dummy_194 + Dummy_195*Dummy_197;
-       const real_t Dummy_199 = jac_affine_0_2_GREEN_DOWN*2.0;
-       const real_t Dummy_200 = -Dummy_199;
-       const real_t Dummy_201 = Dummy_189 + Dummy_200;
-       const real_t Dummy_202 = jac_affine_1_2_GREEN_DOWN*2.0;
-       const real_t Dummy_203 = -Dummy_202;
-       const real_t Dummy_204 = Dummy_192 + Dummy_203;
-       const real_t Dummy_205 = jac_affine_2_2_GREEN_DOWN*2.0;
-       const real_t Dummy_206 = -Dummy_205;
-       const real_t Dummy_207 = Dummy_195 + Dummy_206;
-       const real_t Dummy_208 = Dummy_189*Dummy_201 + Dummy_192*Dummy_204 + Dummy_195*Dummy_207;
-       const real_t Dummy_209 = -Dummy_190 - Dummy_200;
-       const real_t Dummy_210 = -Dummy_193 - Dummy_203;
-       const real_t Dummy_211 = -Dummy_196 - Dummy_206;
-       const real_t Dummy_212 = Dummy_189*Dummy_209 + Dummy_192*Dummy_210 + Dummy_195*Dummy_211;
-       const real_t Dummy_213 = jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0;
-       const real_t Dummy_214 = -Dummy_190*Dummy_191 - Dummy_193*Dummy_194 - Dummy_196*Dummy_197;
-       const real_t Dummy_215 = -Dummy_190*Dummy_201 - Dummy_193*Dummy_204 - Dummy_196*Dummy_207;
-       const real_t Dummy_216 = -Dummy_190*Dummy_209 - Dummy_193*Dummy_210 - Dummy_196*Dummy_211;
-       const real_t Dummy_217 = Dummy_191*Dummy_199 + Dummy_194*Dummy_202 + Dummy_197*Dummy_205;
-       const real_t Dummy_218 = Dummy_199*Dummy_201 + Dummy_202*Dummy_204 + Dummy_205*Dummy_207;
-       const real_t Dummy_219 = Dummy_199*Dummy_209 + Dummy_202*Dummy_210 + Dummy_205*Dummy_211;
-       const real_t Dummy_220 = Dummy_191*Dummy_201 + Dummy_194*Dummy_204 + Dummy_197*Dummy_207;
-       const real_t Dummy_221 = Dummy_191*Dummy_209 + Dummy_194*Dummy_210 + Dummy_197*Dummy_211;
-       const real_t Dummy_222 = Dummy_201*Dummy_209 + Dummy_204*Dummy_210 + Dummy_207*Dummy_211;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 Dummy_182 = jac_affine_0_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_183 = jac_affine_1_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_184 = jac_affine_2_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_185 = -Dummy_182*jac_affine_0_1_GREEN_DOWN - Dummy_183*jac_affine_1_1_GREEN_DOWN - Dummy_184*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_186 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_187 = Dummy_182*jac_affine_0_2_GREEN_DOWN + Dummy_183*jac_affine_1_2_GREEN_DOWN + Dummy_184*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_188 = jac_affine_0_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_189 = jac_affine_0_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_190 = -Dummy_188 + Dummy_189;
+       const walberla::float64 Dummy_191 = jac_affine_1_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_192 = jac_affine_1_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_193 = -Dummy_191 + Dummy_192;
+       const walberla::float64 Dummy_194 = jac_affine_2_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_195 = jac_affine_2_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_196 = -Dummy_194 + Dummy_195;
+       const walberla::float64 Dummy_197 = Dummy_188*Dummy_190 + Dummy_191*Dummy_193 + Dummy_194*Dummy_196;
+       const walberla::float64 Dummy_198 = jac_affine_0_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_199 = -Dummy_198;
+       const walberla::float64 Dummy_200 = Dummy_188 + Dummy_199;
+       const walberla::float64 Dummy_201 = jac_affine_1_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_202 = -Dummy_201;
+       const walberla::float64 Dummy_203 = Dummy_191 + Dummy_202;
+       const walberla::float64 Dummy_204 = jac_affine_2_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_205 = -Dummy_204;
+       const walberla::float64 Dummy_206 = Dummy_194 + Dummy_205;
+       const walberla::float64 Dummy_207 = Dummy_188*Dummy_200 + Dummy_191*Dummy_203 + Dummy_194*Dummy_206;
+       const walberla::float64 Dummy_208 = -Dummy_189 - Dummy_199;
+       const walberla::float64 Dummy_209 = -Dummy_192 - Dummy_202;
+       const walberla::float64 Dummy_210 = -Dummy_195 - Dummy_205;
+       const walberla::float64 Dummy_211 = Dummy_188*Dummy_208 + Dummy_191*Dummy_209 + Dummy_194*Dummy_210;
+       const walberla::float64 Dummy_212 = jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0;
+       const walberla::float64 Dummy_213 = -Dummy_189*Dummy_190 - Dummy_192*Dummy_193 - Dummy_195*Dummy_196;
+       const walberla::float64 Dummy_214 = -Dummy_189*Dummy_200 - Dummy_192*Dummy_203 - Dummy_195*Dummy_206;
+       const walberla::float64 Dummy_215 = -Dummy_189*Dummy_208 - Dummy_192*Dummy_209 - Dummy_195*Dummy_210;
+       const walberla::float64 Dummy_216 = Dummy_190*Dummy_198 + Dummy_193*Dummy_201 + Dummy_196*Dummy_204;
+       const walberla::float64 Dummy_217 = Dummy_198*Dummy_200 + Dummy_201*Dummy_203 + Dummy_204*Dummy_206;
+       const walberla::float64 Dummy_218 = Dummy_198*Dummy_208 + Dummy_201*Dummy_209 + Dummy_204*Dummy_210;
+       const walberla::float64 Dummy_219 = Dummy_190*Dummy_200 + Dummy_193*Dummy_203 + Dummy_196*Dummy_206;
+       const walberla::float64 Dummy_220 = Dummy_190*Dummy_208 + Dummy_193*Dummy_209 + Dummy_196*Dummy_210;
+       const walberla::float64 Dummy_221 = Dummy_200*Dummy_208 + Dummy_203*Dummy_209 + Dummy_206*Dummy_210;
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -799,18 +799,18 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
                 const __m256d src_dof_4 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]);
                 const __m256d src_dof_5 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]);
-                const __m256d tmp_5_GREEN_DOWN = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d tmp_7_GREEN_DOWN = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d tmp_8_GREEN_DOWN = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d tmp_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d tmp_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d tmp_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN))))),_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186))),_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_set_pd(Dummy_188,Dummy_188,Dummy_188,Dummy_188))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_198,Dummy_198,Dummy_198,Dummy_198))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_208,Dummy_208,Dummy_208,Dummy_208))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_212,Dummy_212,Dummy_212,Dummy_212)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN))))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186))),_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_set_pd(Dummy_213,Dummy_213,Dummy_213,Dummy_213))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_214,Dummy_214,Dummy_214,Dummy_214))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_215,Dummy_215,Dummy_215,Dummy_215))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_216,Dummy_216,Dummy_216,Dummy_216)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN))))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_188,Dummy_188,Dummy_188,Dummy_188))),_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_set_pd(Dummy_213,Dummy_213,Dummy_213,Dummy_213))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_217,Dummy_217,Dummy_217,Dummy_217))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_218,Dummy_218,Dummy_218,Dummy_218))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_219,Dummy_219,Dummy_219,Dummy_219)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_191,Dummy_191,Dummy_191,Dummy_191),_mm256_set_pd(Dummy_191,Dummy_191,Dummy_191,Dummy_191)),_mm256_mul_pd(_mm256_set_pd(Dummy_194,Dummy_194,Dummy_194,Dummy_194),_mm256_set_pd(Dummy_194,Dummy_194,Dummy_194,Dummy_194))),_mm256_mul_pd(_mm256_set_pd(Dummy_197,Dummy_197,Dummy_197,Dummy_197),_mm256_set_pd(Dummy_197,Dummy_197,Dummy_197,Dummy_197)))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_198,Dummy_198,Dummy_198,Dummy_198))),_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_set_pd(Dummy_214,Dummy_214,Dummy_214,Dummy_214))),_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_set_pd(Dummy_217,Dummy_217,Dummy_217,Dummy_217))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_220,Dummy_220,Dummy_220,Dummy_220))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_221,Dummy_221,Dummy_221,Dummy_221)));
-                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_201,Dummy_201,Dummy_201,Dummy_201),_mm256_set_pd(Dummy_201,Dummy_201,Dummy_201,Dummy_201)),_mm256_mul_pd(_mm256_set_pd(Dummy_204,Dummy_204,Dummy_204,Dummy_204),_mm256_set_pd(Dummy_204,Dummy_204,Dummy_204,Dummy_204))),_mm256_mul_pd(_mm256_set_pd(Dummy_207,Dummy_207,Dummy_207,Dummy_207),_mm256_set_pd(Dummy_207,Dummy_207,Dummy_207,Dummy_207)))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_208,Dummy_208,Dummy_208,Dummy_208))),_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_set_pd(Dummy_215,Dummy_215,Dummy_215,Dummy_215))),_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_set_pd(Dummy_218,Dummy_218,Dummy_218,Dummy_218))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_220,Dummy_220,Dummy_220,Dummy_220))),_mm256_mul_pd(tmp_35,_mm256_set_pd(Dummy_222,Dummy_222,Dummy_222,Dummy_222)));
-                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_209,Dummy_209,Dummy_209,Dummy_209),_mm256_set_pd(Dummy_209,Dummy_209,Dummy_209,Dummy_209)),_mm256_mul_pd(_mm256_set_pd(Dummy_210,Dummy_210,Dummy_210,Dummy_210),_mm256_set_pd(Dummy_210,Dummy_210,Dummy_210,Dummy_210))),_mm256_mul_pd(_mm256_set_pd(Dummy_211,Dummy_211,Dummy_211,Dummy_211),_mm256_set_pd(Dummy_211,Dummy_211,Dummy_211,Dummy_211)))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_212,Dummy_212,Dummy_212,Dummy_212))),_mm256_mul_pd(tmp_5_GREEN_DOWN,_mm256_set_pd(Dummy_216,Dummy_216,Dummy_216,Dummy_216))),_mm256_mul_pd(tmp_7_GREEN_DOWN,_mm256_set_pd(Dummy_219,Dummy_219,Dummy_219,Dummy_219))),_mm256_mul_pd(tmp_19,_mm256_set_pd(Dummy_221,Dummy_221,Dummy_221,Dummy_221))),_mm256_mul_pd(tmp_30,_mm256_set_pd(Dummy_222,Dummy_222,Dummy_222,Dummy_222)));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d tmp_kernel_op_19 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d tmp_kernel_op_30 = _mm256_mul_pd(src_dof_4,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d tmp_kernel_op_35 = _mm256_mul_pd(src_dof_5,_mm256_set_pd(Dummy_186,Dummy_186,Dummy_186,Dummy_186));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN,jac_affine_0_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN,jac_affine_1_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN,jac_affine_2_0_GREEN_DOWN))))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_185,Dummy_185,Dummy_185,Dummy_185))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_197,Dummy_197,Dummy_197,Dummy_197))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_207,Dummy_207,Dummy_207,Dummy_207))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_211,Dummy_211,Dummy_211,Dummy_211)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN,jac_affine_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN,jac_affine_1_1_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN,jac_affine_2_1_GREEN_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_185,Dummy_185,Dummy_185,Dummy_185))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_212,Dummy_212,Dummy_212,Dummy_212))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_213,Dummy_213,Dummy_213,Dummy_213))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_214,Dummy_214,Dummy_214,Dummy_214))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_215,Dummy_215,Dummy_215,Dummy_215)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN,jac_affine_0_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN,jac_affine_1_2_GREEN_DOWN)))),_mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_mul_pd(_mm256_set_pd(jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN,jac_affine_2_2_GREEN_DOWN))))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_187,Dummy_187,Dummy_187,Dummy_187))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_212,Dummy_212,Dummy_212,Dummy_212))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_216,Dummy_216,Dummy_216,Dummy_216))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_217,Dummy_217,Dummy_217,Dummy_217))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_218,Dummy_218,Dummy_218,Dummy_218)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_19,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_190,Dummy_190,Dummy_190,Dummy_190),_mm256_set_pd(Dummy_190,Dummy_190,Dummy_190,Dummy_190)),_mm256_mul_pd(_mm256_set_pd(Dummy_193,Dummy_193,Dummy_193,Dummy_193),_mm256_set_pd(Dummy_193,Dummy_193,Dummy_193,Dummy_193))),_mm256_mul_pd(_mm256_set_pd(Dummy_196,Dummy_196,Dummy_196,Dummy_196),_mm256_set_pd(Dummy_196,Dummy_196,Dummy_196,Dummy_196)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_197,Dummy_197,Dummy_197,Dummy_197))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_213,Dummy_213,Dummy_213,Dummy_213))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_216,Dummy_216,Dummy_216,Dummy_216))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_219,Dummy_219,Dummy_219,Dummy_219))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_220,Dummy_220,Dummy_220,Dummy_220)));
+                const __m256d elMatVec_4 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_30,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_200,Dummy_200,Dummy_200,Dummy_200),_mm256_set_pd(Dummy_200,Dummy_200,Dummy_200,Dummy_200)),_mm256_mul_pd(_mm256_set_pd(Dummy_203,Dummy_203,Dummy_203,Dummy_203),_mm256_set_pd(Dummy_203,Dummy_203,Dummy_203,Dummy_203))),_mm256_mul_pd(_mm256_set_pd(Dummy_206,Dummy_206,Dummy_206,Dummy_206),_mm256_set_pd(Dummy_206,Dummy_206,Dummy_206,Dummy_206)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_207,Dummy_207,Dummy_207,Dummy_207))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_214,Dummy_214,Dummy_214,Dummy_214))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_217,Dummy_217,Dummy_217,Dummy_217))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_219,Dummy_219,Dummy_219,Dummy_219))),_mm256_mul_pd(tmp_kernel_op_35,_mm256_set_pd(Dummy_221,Dummy_221,Dummy_221,Dummy_221)));
+                const __m256d elMatVec_5 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_35,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_208,Dummy_208,Dummy_208,Dummy_208),_mm256_set_pd(Dummy_208,Dummy_208,Dummy_208,Dummy_208)),_mm256_mul_pd(_mm256_set_pd(Dummy_209,Dummy_209,Dummy_209,Dummy_209),_mm256_set_pd(Dummy_209,Dummy_209,Dummy_209,Dummy_209))),_mm256_mul_pd(_mm256_set_pd(Dummy_210,Dummy_210,Dummy_210,Dummy_210),_mm256_set_pd(Dummy_210,Dummy_210,Dummy_210,Dummy_210)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(Dummy_211,Dummy_211,Dummy_211,Dummy_211))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(Dummy_215,Dummy_215,Dummy_215,Dummy_215))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(Dummy_218,Dummy_218,Dummy_218,Dummy_218))),_mm256_mul_pd(tmp_kernel_op_19,_mm256_set_pd(Dummy_220,Dummy_220,Dummy_220,Dummy_220))),_mm256_mul_pd(tmp_kernel_op_30,_mm256_set_pd(Dummy_221,Dummy_221,Dummy_221,Dummy_221)));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
                 _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
@@ -820,24 +820,24 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t tmp_5_GREEN_DOWN = Dummy_187*src_dof_1;
-                const real_t tmp_7_GREEN_DOWN = Dummy_187*src_dof_2;
-                const real_t tmp_8_GREEN_DOWN = Dummy_187*src_dof_0;
-                const real_t tmp_19 = Dummy_187*src_dof_3;
-                const real_t tmp_30 = Dummy_187*src_dof_4;
-                const real_t tmp_35 = Dummy_187*src_dof_5;
-                const real_t elMatVec_0 = Dummy_186*tmp_5_GREEN_DOWN + Dummy_188*tmp_7_GREEN_DOWN + Dummy_198*tmp_19 + Dummy_208*tmp_30 + Dummy_212*tmp_35 + tmp_8_GREEN_DOWN*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
-                const real_t elMatVec_1 = Dummy_186*tmp_8_GREEN_DOWN + Dummy_213*tmp_7_GREEN_DOWN + Dummy_214*tmp_19 + Dummy_215*tmp_30 + Dummy_216*tmp_35 + tmp_5_GREEN_DOWN*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
-                const real_t elMatVec_2 = Dummy_188*tmp_8_GREEN_DOWN + Dummy_213*tmp_5_GREEN_DOWN + Dummy_217*tmp_19 + Dummy_218*tmp_30 + Dummy_219*tmp_35 + tmp_7_GREEN_DOWN*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
-                const real_t elMatVec_3 = Dummy_198*tmp_8_GREEN_DOWN + Dummy_214*tmp_5_GREEN_DOWN + Dummy_217*tmp_7_GREEN_DOWN + Dummy_220*tmp_30 + Dummy_221*tmp_35 + tmp_19*((Dummy_191*Dummy_191) + (Dummy_194*Dummy_194) + (Dummy_197*Dummy_197));
-                const real_t elMatVec_4 = Dummy_208*tmp_8_GREEN_DOWN + Dummy_215*tmp_5_GREEN_DOWN + Dummy_218*tmp_7_GREEN_DOWN + Dummy_220*tmp_19 + Dummy_222*tmp_35 + tmp_30*((Dummy_201*Dummy_201) + (Dummy_204*Dummy_204) + (Dummy_207*Dummy_207));
-                const real_t elMatVec_5 = Dummy_212*tmp_8_GREEN_DOWN + Dummy_216*tmp_5_GREEN_DOWN + Dummy_219*tmp_7_GREEN_DOWN + Dummy_221*tmp_19 + Dummy_222*tmp_30 + tmp_35*((Dummy_209*Dummy_209) + (Dummy_210*Dummy_210) + (Dummy_211*Dummy_211));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 tmp_kernel_op_5 = Dummy_186*src_dof_1;
+                const walberla::float64 tmp_kernel_op_7 = Dummy_186*src_dof_2;
+                const walberla::float64 tmp_kernel_op_8 = Dummy_186*src_dof_0;
+                const walberla::float64 tmp_kernel_op_19 = Dummy_186*src_dof_3;
+                const walberla::float64 tmp_kernel_op_30 = Dummy_186*src_dof_4;
+                const walberla::float64 tmp_kernel_op_35 = Dummy_186*src_dof_5;
+                const walberla::float64 elMatVec_0 = Dummy_185*tmp_kernel_op_5 + Dummy_187*tmp_kernel_op_7 + Dummy_197*tmp_kernel_op_19 + Dummy_207*tmp_kernel_op_30 + Dummy_211*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
+                const walberla::float64 elMatVec_1 = Dummy_185*tmp_kernel_op_8 + Dummy_212*tmp_kernel_op_7 + Dummy_213*tmp_kernel_op_19 + Dummy_214*tmp_kernel_op_30 + Dummy_215*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
+                const walberla::float64 elMatVec_2 = Dummy_187*tmp_kernel_op_8 + Dummy_212*tmp_kernel_op_5 + Dummy_216*tmp_kernel_op_19 + Dummy_217*tmp_kernel_op_30 + Dummy_218*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
+                const walberla::float64 elMatVec_3 = Dummy_197*tmp_kernel_op_8 + Dummy_213*tmp_kernel_op_5 + Dummy_216*tmp_kernel_op_7 + Dummy_219*tmp_kernel_op_30 + Dummy_220*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_190*Dummy_190) + (Dummy_193*Dummy_193) + (Dummy_196*Dummy_196));
+                const walberla::float64 elMatVec_4 = Dummy_207*tmp_kernel_op_8 + Dummy_214*tmp_kernel_op_5 + Dummy_217*tmp_kernel_op_7 + Dummy_219*tmp_kernel_op_19 + Dummy_221*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_200*Dummy_200) + (Dummy_203*Dummy_203) + (Dummy_206*Dummy_206));
+                const walberla::float64 elMatVec_5 = Dummy_211*tmp_kernel_op_8 + Dummy_215*tmp_kernel_op_5 + Dummy_218*tmp_kernel_op_7 + Dummy_220*tmp_kernel_op_19 + Dummy_221*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_208*Dummy_208) + (Dummy_209*Dummy_209) + (Dummy_210*Dummy_210));
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
diff --git a/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 20062cf78a59a1b2392d9d5dc16e585d6e795acf..4348ab709b2b622d00bfc49310186d108f17f839 100644
--- a/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/curl_curl/avx/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -58,48 +58,48 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t Dummy_604 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666666;
-       const real_t tmp_1 = jac_affine_0_0_WHITE_UP*2.0;
-       const real_t tmp_2 = jac_affine_0_1_WHITE_UP*2.0;
-       const real_t tmp_3 = jac_affine_1_0_WHITE_UP*2.0;
-       const real_t tmp_4 = jac_affine_1_1_WHITE_UP*2.0;
-       const real_t tmp_5 = jac_affine_2_0_WHITE_UP*2.0;
-       const real_t tmp_6 = jac_affine_2_1_WHITE_UP*2.0;
-       const real_t tmp_7 = jac_affine_0_2_WHITE_UP*-2.0;
-       const real_t tmp_8 = jac_affine_1_2_WHITE_UP*-2.0;
-       const real_t tmp_9 = jac_affine_2_2_WHITE_UP*-2.0;
-       const real_t elMatDiag_0 = Dummy_604*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
-       const real_t elMatDiag_1 = Dummy_604*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
-       const real_t elMatDiag_2 = Dummy_604*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
-       const real_t elMatDiag_3 = Dummy_604*(((-tmp_1 + tmp_2)*(-tmp_1 + tmp_2)) + ((-tmp_3 + tmp_4)*(-tmp_3 + tmp_4)) + ((-tmp_5 + tmp_6)*(-tmp_5 + tmp_6)));
-       const real_t elMatDiag_4 = Dummy_604*(((tmp_1 + tmp_7)*(tmp_1 + tmp_7)) + ((tmp_3 + tmp_8)*(tmp_3 + tmp_8)) + ((tmp_5 + tmp_9)*(tmp_5 + tmp_9)));
-       const real_t elMatDiag_5 = Dummy_604*(((-tmp_2 - tmp_7)*(-tmp_2 - tmp_7)) + ((-tmp_4 - tmp_8)*(-tmp_4 - tmp_8)) + ((-tmp_6 - tmp_9)*(-tmp_6 - tmp_9)));
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_1 = jac_affine_0_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_2 = jac_affine_0_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_3 = jac_affine_1_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_4 = jac_affine_1_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_5 = jac_affine_2_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_2_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_7 = jac_affine_0_2_WHITE_UP*-2.0;
+       const walberla::float64 tmp_kernel_op_8 = jac_affine_1_2_WHITE_UP*-2.0;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_2_2_WHITE_UP*-2.0;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*(((-tmp_kernel_op_1 + tmp_kernel_op_2)*(-tmp_kernel_op_1 + tmp_kernel_op_2)) + ((-tmp_kernel_op_3 + tmp_kernel_op_4)*(-tmp_kernel_op_3 + tmp_kernel_op_4)) + ((-tmp_kernel_op_5 + tmp_kernel_op_6)*(-tmp_kernel_op_5 + tmp_kernel_op_6)));
+       const walberla::float64 elMatDiag_4 = tmp_kernel_op_0*(((tmp_kernel_op_1 + tmp_kernel_op_7)*(tmp_kernel_op_1 + tmp_kernel_op_7)) + ((tmp_kernel_op_3 + tmp_kernel_op_8)*(tmp_kernel_op_3 + tmp_kernel_op_8)) + ((tmp_kernel_op_5 + tmp_kernel_op_9)*(tmp_kernel_op_5 + tmp_kernel_op_9)));
+       const walberla::float64 elMatDiag_5 = tmp_kernel_op_0*(((-tmp_kernel_op_2 - tmp_kernel_op_7)*(-tmp_kernel_op_2 - tmp_kernel_op_7)) + ((-tmp_kernel_op_4 - tmp_kernel_op_8)*(-tmp_kernel_op_4 - tmp_kernel_op_8)) + ((-tmp_kernel_op_6 - tmp_kernel_op_9)*(-tmp_kernel_op_6 - tmp_kernel_op_9)));
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -125,57 +125,57 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t Dummy_605 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666666;
-       const real_t Dummy_606 = jac_affine_0_0_WHITE_DOWN*2.0;
-       const real_t Dummy_607 = jac_affine_0_1_WHITE_DOWN*2.0;
-       const real_t Dummy_608 = jac_affine_1_0_WHITE_DOWN*2.0;
-       const real_t Dummy_609 = jac_affine_1_1_WHITE_DOWN*2.0;
-       const real_t Dummy_610 = jac_affine_2_0_WHITE_DOWN*2.0;
-       const real_t Dummy_611 = jac_affine_2_1_WHITE_DOWN*2.0;
-       const real_t Dummy_612 = jac_affine_0_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_613 = jac_affine_1_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_614 = jac_affine_2_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_615 = Dummy_605*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
-       const real_t Dummy_616 = Dummy_605*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
-       const real_t Dummy_617 = Dummy_605*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
-       const real_t Dummy_618 = Dummy_605*(((-Dummy_606 + Dummy_607)*(-Dummy_606 + Dummy_607)) + ((-Dummy_608 + Dummy_609)*(-Dummy_608 + Dummy_609)) + ((-Dummy_610 + Dummy_611)*(-Dummy_610 + Dummy_611)));
-       const real_t Dummy_619 = Dummy_605*(((Dummy_606 + Dummy_612)*(Dummy_606 + Dummy_612)) + ((Dummy_608 + Dummy_613)*(Dummy_608 + Dummy_613)) + ((Dummy_610 + Dummy_614)*(Dummy_610 + Dummy_614)));
-       const real_t Dummy_620 = Dummy_605*(((-Dummy_607 - Dummy_612)*(-Dummy_607 - Dummy_612)) + ((-Dummy_609 - Dummy_613)*(-Dummy_609 - Dummy_613)) + ((-Dummy_611 - Dummy_614)*(-Dummy_611 - Dummy_614)));
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 Dummy_602 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_603 = jac_affine_0_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_604 = jac_affine_0_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_605 = jac_affine_1_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_606 = jac_affine_1_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_607 = jac_affine_2_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_608 = jac_affine_2_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_609 = jac_affine_0_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_610 = jac_affine_1_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_611 = jac_affine_2_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_612 = Dummy_602*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_613 = Dummy_602*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_614 = Dummy_602*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_615 = Dummy_602*(((-Dummy_603 + Dummy_604)*(-Dummy_603 + Dummy_604)) + ((-Dummy_605 + Dummy_606)*(-Dummy_605 + Dummy_606)) + ((-Dummy_607 + Dummy_608)*(-Dummy_607 + Dummy_608)));
+       const walberla::float64 Dummy_616 = Dummy_602*(((Dummy_603 + Dummy_609)*(Dummy_603 + Dummy_609)) + ((Dummy_605 + Dummy_610)*(Dummy_605 + Dummy_610)) + ((Dummy_607 + Dummy_611)*(Dummy_607 + Dummy_611)));
+       const walberla::float64 Dummy_617 = Dummy_602*(((-Dummy_604 - Dummy_609)*(-Dummy_604 - Dummy_609)) + ((-Dummy_606 - Dummy_610)*(-Dummy_606 - Dummy_610)) + ((-Dummy_608 - Dummy_611)*(-Dummy_608 - Dummy_611)));
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -183,69 +183,69 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
           {
              for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 += 4)
              {
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_615,Dummy_615,Dummy_615,Dummy_615),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_616,Dummy_616,Dummy_616,Dummy_616),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_617,Dummy_617,Dummy_617,Dummy_617),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_618,Dummy_618,Dummy_618,Dummy_618),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_619,Dummy_619,Dummy_619,Dummy_619),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_620,Dummy_620,Dummy_620,Dummy_620),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_612,Dummy_612,Dummy_612,Dummy_612),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_613,Dummy_613,Dummy_613,Dummy_613),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_614,Dummy_614,Dummy_614,Dummy_614),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_615,Dummy_615,Dummy_615,Dummy_615),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_616,Dummy_616,Dummy_616,Dummy_616),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_617,Dummy_617,Dummy_617,Dummy_617),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_615 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = Dummy_616 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_617 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_618 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_619 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_620 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_612 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = Dummy_613 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_614 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_615 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_616 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_617 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t Dummy_621 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666666;
-       const real_t Dummy_622 = jac_affine_0_0_BLUE_UP*2.0;
-       const real_t Dummy_623 = jac_affine_0_1_BLUE_UP*2.0;
-       const real_t Dummy_624 = jac_affine_1_0_BLUE_UP*2.0;
-       const real_t Dummy_625 = jac_affine_1_1_BLUE_UP*2.0;
-       const real_t Dummy_626 = jac_affine_2_0_BLUE_UP*2.0;
-       const real_t Dummy_627 = jac_affine_2_1_BLUE_UP*2.0;
-       const real_t Dummy_628 = jac_affine_0_2_BLUE_UP*-2.0;
-       const real_t Dummy_629 = jac_affine_1_2_BLUE_UP*-2.0;
-       const real_t Dummy_630 = jac_affine_2_2_BLUE_UP*-2.0;
-       const real_t Dummy_631 = Dummy_621*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
-       const real_t Dummy_632 = Dummy_621*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
-       const real_t Dummy_633 = Dummy_621*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
-       const real_t Dummy_634 = Dummy_621*(((-Dummy_622 + Dummy_623)*(-Dummy_622 + Dummy_623)) + ((-Dummy_624 + Dummy_625)*(-Dummy_624 + Dummy_625)) + ((-Dummy_626 + Dummy_627)*(-Dummy_626 + Dummy_627)));
-       const real_t Dummy_635 = Dummy_621*(((Dummy_622 + Dummy_628)*(Dummy_622 + Dummy_628)) + ((Dummy_624 + Dummy_629)*(Dummy_624 + Dummy_629)) + ((Dummy_626 + Dummy_630)*(Dummy_626 + Dummy_630)));
-       const real_t Dummy_636 = Dummy_621*(((-Dummy_623 - Dummy_628)*(-Dummy_623 - Dummy_628)) + ((-Dummy_625 - Dummy_629)*(-Dummy_625 - Dummy_629)) + ((-Dummy_627 - Dummy_630)*(-Dummy_627 - Dummy_630)));
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 Dummy_618 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_619 = jac_affine_0_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_620 = jac_affine_0_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_621 = jac_affine_1_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_622 = jac_affine_1_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_623 = jac_affine_2_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_624 = jac_affine_2_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_625 = jac_affine_0_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_626 = jac_affine_1_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_627 = jac_affine_2_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_628 = Dummy_618*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_629 = Dummy_618*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_630 = Dummy_618*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_631 = Dummy_618*(((-Dummy_619 + Dummy_620)*(-Dummy_619 + Dummy_620)) + ((-Dummy_621 + Dummy_622)*(-Dummy_621 + Dummy_622)) + ((-Dummy_623 + Dummy_624)*(-Dummy_623 + Dummy_624)));
+       const walberla::float64 Dummy_632 = Dummy_618*(((Dummy_619 + Dummy_625)*(Dummy_619 + Dummy_625)) + ((Dummy_621 + Dummy_626)*(Dummy_621 + Dummy_626)) + ((Dummy_623 + Dummy_627)*(Dummy_623 + Dummy_627)));
+       const walberla::float64 Dummy_633 = Dummy_618*(((-Dummy_620 - Dummy_625)*(-Dummy_620 - Dummy_625)) + ((-Dummy_622 - Dummy_626)*(-Dummy_622 - Dummy_626)) + ((-Dummy_624 - Dummy_627)*(-Dummy_624 - Dummy_627)));
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -253,72 +253,72 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
           {
              for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4)
              {
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_631,Dummy_631,Dummy_631,Dummy_631),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_632,Dummy_632,Dummy_632,Dummy_632),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_633,Dummy_633,Dummy_633,Dummy_633),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_634,Dummy_634,Dummy_634,Dummy_634),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_635,Dummy_635,Dummy_635,Dummy_635),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_636,Dummy_636,Dummy_636,Dummy_636),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_628,Dummy_628,Dummy_628,Dummy_628),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_629,Dummy_629,Dummy_629,Dummy_629),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_630,Dummy_630,Dummy_630,Dummy_630),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_631,Dummy_631,Dummy_631,Dummy_631),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_632,Dummy_632,Dummy_632,Dummy_632),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_633,Dummy_633,Dummy_633,Dummy_633),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_631 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_632 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_633 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_634 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_635 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_636 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_628 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_629 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_630 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_631 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_632 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_633 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t Dummy_637 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666666;
-       const real_t Dummy_638 = jac_affine_0_0_BLUE_DOWN*2.0;
-       const real_t Dummy_639 = jac_affine_0_1_BLUE_DOWN*2.0;
-       const real_t Dummy_640 = jac_affine_1_0_BLUE_DOWN*2.0;
-       const real_t Dummy_641 = jac_affine_1_1_BLUE_DOWN*2.0;
-       const real_t Dummy_642 = jac_affine_2_0_BLUE_DOWN*2.0;
-       const real_t Dummy_643 = jac_affine_2_1_BLUE_DOWN*2.0;
-       const real_t Dummy_644 = jac_affine_0_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_645 = jac_affine_1_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_646 = jac_affine_2_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_647 = Dummy_637*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
-       const real_t Dummy_648 = Dummy_637*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
-       const real_t Dummy_649 = Dummy_637*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
-       const real_t Dummy_650 = Dummy_637*(((-Dummy_638 + Dummy_639)*(-Dummy_638 + Dummy_639)) + ((-Dummy_640 + Dummy_641)*(-Dummy_640 + Dummy_641)) + ((-Dummy_642 + Dummy_643)*(-Dummy_642 + Dummy_643)));
-       const real_t Dummy_651 = Dummy_637*(((Dummy_638 + Dummy_644)*(Dummy_638 + Dummy_644)) + ((Dummy_640 + Dummy_645)*(Dummy_640 + Dummy_645)) + ((Dummy_642 + Dummy_646)*(Dummy_642 + Dummy_646)));
-       const real_t Dummy_652 = Dummy_637*(((-Dummy_639 - Dummy_644)*(-Dummy_639 - Dummy_644)) + ((-Dummy_641 - Dummy_645)*(-Dummy_641 - Dummy_645)) + ((-Dummy_643 - Dummy_646)*(-Dummy_643 - Dummy_646)));
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 Dummy_634 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_635 = jac_affine_0_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_636 = jac_affine_0_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_637 = jac_affine_1_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_638 = jac_affine_1_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_639 = jac_affine_2_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_640 = jac_affine_2_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_641 = jac_affine_0_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_642 = jac_affine_1_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_643 = jac_affine_2_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_644 = Dummy_634*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_645 = Dummy_634*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_646 = Dummy_634*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_647 = Dummy_634*(((-Dummy_635 + Dummy_636)*(-Dummy_635 + Dummy_636)) + ((-Dummy_637 + Dummy_638)*(-Dummy_637 + Dummy_638)) + ((-Dummy_639 + Dummy_640)*(-Dummy_639 + Dummy_640)));
+       const walberla::float64 Dummy_648 = Dummy_634*(((Dummy_635 + Dummy_641)*(Dummy_635 + Dummy_641)) + ((Dummy_637 + Dummy_642)*(Dummy_637 + Dummy_642)) + ((Dummy_639 + Dummy_643)*(Dummy_639 + Dummy_643)));
+       const walberla::float64 Dummy_649 = Dummy_634*(((-Dummy_636 - Dummy_641)*(-Dummy_636 - Dummy_641)) + ((-Dummy_638 - Dummy_642)*(-Dummy_638 - Dummy_642)) + ((-Dummy_640 - Dummy_643)*(-Dummy_640 - Dummy_643)));
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -326,69 +326,69 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
           {
              for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4)
              {
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_647,Dummy_647,Dummy_647,Dummy_647),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_648,Dummy_648,Dummy_648,Dummy_648),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_649,Dummy_649,Dummy_649,Dummy_649),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_650,Dummy_650,Dummy_650,Dummy_650),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_651,Dummy_651,Dummy_651,Dummy_651),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_652,Dummy_652,Dummy_652,Dummy_652),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_644,Dummy_644,Dummy_644,Dummy_644),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_645,Dummy_645,Dummy_645,Dummy_645),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_646,Dummy_646,Dummy_646,Dummy_646),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_647,Dummy_647,Dummy_647,Dummy_647),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_648,Dummy_648,Dummy_648,Dummy_648),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_649,Dummy_649,Dummy_649,Dummy_649),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_647 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_648 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_649 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_650 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_651 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_652 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_644 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_645 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_646 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_647 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_648 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_649 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t Dummy_653 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666666;
-       const real_t Dummy_654 = jac_affine_0_0_GREEN_UP*2.0;
-       const real_t Dummy_655 = jac_affine_0_1_GREEN_UP*2.0;
-       const real_t Dummy_656 = jac_affine_1_0_GREEN_UP*2.0;
-       const real_t Dummy_657 = jac_affine_1_1_GREEN_UP*2.0;
-       const real_t Dummy_658 = jac_affine_2_0_GREEN_UP*2.0;
-       const real_t Dummy_659 = jac_affine_2_1_GREEN_UP*2.0;
-       const real_t Dummy_660 = jac_affine_0_2_GREEN_UP*-2.0;
-       const real_t Dummy_661 = jac_affine_1_2_GREEN_UP*-2.0;
-       const real_t Dummy_662 = jac_affine_2_2_GREEN_UP*-2.0;
-       const real_t Dummy_663 = Dummy_653*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
-       const real_t Dummy_664 = Dummy_653*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
-       const real_t Dummy_665 = Dummy_653*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
-       const real_t Dummy_666 = Dummy_653*(((-Dummy_654 + Dummy_655)*(-Dummy_654 + Dummy_655)) + ((-Dummy_656 + Dummy_657)*(-Dummy_656 + Dummy_657)) + ((-Dummy_658 + Dummy_659)*(-Dummy_658 + Dummy_659)));
-       const real_t Dummy_667 = Dummy_653*(((Dummy_654 + Dummy_660)*(Dummy_654 + Dummy_660)) + ((Dummy_656 + Dummy_661)*(Dummy_656 + Dummy_661)) + ((Dummy_658 + Dummy_662)*(Dummy_658 + Dummy_662)));
-       const real_t Dummy_668 = Dummy_653*(((-Dummy_655 - Dummy_660)*(-Dummy_655 - Dummy_660)) + ((-Dummy_657 - Dummy_661)*(-Dummy_657 - Dummy_661)) + ((-Dummy_659 - Dummy_662)*(-Dummy_659 - Dummy_662)));
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 Dummy_650 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_651 = jac_affine_0_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_652 = jac_affine_0_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_653 = jac_affine_1_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_654 = jac_affine_1_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_655 = jac_affine_2_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_656 = jac_affine_2_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_657 = jac_affine_0_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_658 = jac_affine_1_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_659 = jac_affine_2_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_660 = Dummy_650*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_661 = Dummy_650*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_662 = Dummy_650*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_663 = Dummy_650*(((-Dummy_651 + Dummy_652)*(-Dummy_651 + Dummy_652)) + ((-Dummy_653 + Dummy_654)*(-Dummy_653 + Dummy_654)) + ((-Dummy_655 + Dummy_656)*(-Dummy_655 + Dummy_656)));
+       const walberla::float64 Dummy_664 = Dummy_650*(((Dummy_651 + Dummy_657)*(Dummy_651 + Dummy_657)) + ((Dummy_653 + Dummy_658)*(Dummy_653 + Dummy_658)) + ((Dummy_655 + Dummy_659)*(Dummy_655 + Dummy_659)));
+       const walberla::float64 Dummy_665 = Dummy_650*(((-Dummy_652 - Dummy_657)*(-Dummy_652 - Dummy_657)) + ((-Dummy_654 - Dummy_658)*(-Dummy_654 - Dummy_658)) + ((-Dummy_656 - Dummy_659)*(-Dummy_656 - Dummy_659)));
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -396,72 +396,72 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
           {
              for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4)
              {
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_663,Dummy_663,Dummy_663,Dummy_663),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_664,Dummy_664,Dummy_664,Dummy_664),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_665,Dummy_665,Dummy_665,Dummy_665),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_666,Dummy_666,Dummy_666,Dummy_666),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_667,Dummy_667,Dummy_667,Dummy_667),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_668,Dummy_668,Dummy_668,Dummy_668),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_660,Dummy_660,Dummy_660,Dummy_660),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_661,Dummy_661,Dummy_661,Dummy_661),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_662,Dummy_662,Dummy_662,Dummy_662),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_663,Dummy_663,Dummy_663,Dummy_663),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_664,Dummy_664,Dummy_664,Dummy_664),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_665,Dummy_665,Dummy_665,Dummy_665),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_663 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_664 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_665 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_666 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_667 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_668 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_660 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_661 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_662 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_663 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_664 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_665 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t Dummy_669 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666666;
-       const real_t Dummy_670 = jac_affine_0_0_GREEN_DOWN*2.0;
-       const real_t Dummy_671 = jac_affine_0_1_GREEN_DOWN*2.0;
-       const real_t Dummy_672 = jac_affine_1_0_GREEN_DOWN*2.0;
-       const real_t Dummy_673 = jac_affine_1_1_GREEN_DOWN*2.0;
-       const real_t Dummy_674 = jac_affine_2_0_GREEN_DOWN*2.0;
-       const real_t Dummy_675 = jac_affine_2_1_GREEN_DOWN*2.0;
-       const real_t Dummy_676 = jac_affine_0_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_677 = jac_affine_1_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_678 = jac_affine_2_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_679 = Dummy_669*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
-       const real_t Dummy_680 = Dummy_669*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
-       const real_t Dummy_681 = Dummy_669*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
-       const real_t Dummy_682 = Dummy_669*(((-Dummy_670 + Dummy_671)*(-Dummy_670 + Dummy_671)) + ((-Dummy_672 + Dummy_673)*(-Dummy_672 + Dummy_673)) + ((-Dummy_674 + Dummy_675)*(-Dummy_674 + Dummy_675)));
-       const real_t Dummy_683 = Dummy_669*(((Dummy_670 + Dummy_676)*(Dummy_670 + Dummy_676)) + ((Dummy_672 + Dummy_677)*(Dummy_672 + Dummy_677)) + ((Dummy_674 + Dummy_678)*(Dummy_674 + Dummy_678)));
-       const real_t Dummy_684 = Dummy_669*(((-Dummy_671 - Dummy_676)*(-Dummy_671 - Dummy_676)) + ((-Dummy_673 - Dummy_677)*(-Dummy_673 - Dummy_677)) + ((-Dummy_675 - Dummy_678)*(-Dummy_675 - Dummy_678)));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 Dummy_666 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_667 = jac_affine_0_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_668 = jac_affine_0_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_669 = jac_affine_1_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_670 = jac_affine_1_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_671 = jac_affine_2_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_672 = jac_affine_2_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_673 = jac_affine_0_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_674 = jac_affine_1_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_675 = jac_affine_2_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_676 = Dummy_666*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_677 = Dummy_666*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_678 = Dummy_666*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_679 = Dummy_666*(((-Dummy_667 + Dummy_668)*(-Dummy_667 + Dummy_668)) + ((-Dummy_669 + Dummy_670)*(-Dummy_669 + Dummy_670)) + ((-Dummy_671 + Dummy_672)*(-Dummy_671 + Dummy_672)));
+       const walberla::float64 Dummy_680 = Dummy_666*(((Dummy_667 + Dummy_673)*(Dummy_667 + Dummy_673)) + ((Dummy_669 + Dummy_674)*(Dummy_669 + Dummy_674)) + ((Dummy_671 + Dummy_675)*(Dummy_671 + Dummy_675)));
+       const walberla::float64 Dummy_681 = Dummy_666*(((-Dummy_668 - Dummy_673)*(-Dummy_668 - Dummy_673)) + ((-Dummy_670 - Dummy_674)*(-Dummy_670 - Dummy_674)) + ((-Dummy_672 - Dummy_675)*(-Dummy_672 - Dummy_675)));
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -469,21 +469,21 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
           {
              for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4)
              {
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_679,Dummy_679,Dummy_679,Dummy_679),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_680,Dummy_680,Dummy_680,Dummy_680),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_681,Dummy_681,Dummy_681,Dummy_681),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_682,Dummy_682,Dummy_682,Dummy_682),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_683,Dummy_683,Dummy_683,Dummy_683),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
-                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_684,Dummy_684,Dummy_684,Dummy_684),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_676,Dummy_676,Dummy_676,Dummy_676),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_677,Dummy_677,Dummy_677,Dummy_677),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_678,Dummy_678,Dummy_678,Dummy_678),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_679,Dummy_679,Dummy_679,Dummy_679),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_680,Dummy_680,Dummy_680,Dummy_680),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))])));
+                _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_681,Dummy_681,Dummy_681,Dummy_681),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))])));
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_679 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_680 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_681 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_682 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_683 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_684 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_676 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_677 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_678 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_679 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_680 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_681 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              }
           }
        }
diff --git a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
index 3555e2607b804b3156357825978f414fb4077217..01074fd4afac0095879bd274327a6619643a3ada 100644
--- a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
+++ b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
@@ -58,96 +58,96 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void N1E1ElementwiseCurlCurl::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t Dummy_22 = jac_affine_0_0_WHITE_UP*4.0;
-       const real_t tmp_1 = jac_affine_1_0_WHITE_UP*4.0;
-       const real_t tmp_2 = jac_affine_2_0_WHITE_UP*4.0;
-       const real_t tmp_3 = -Dummy_22*jac_affine_0_1_WHITE_UP - jac_affine_1_1_WHITE_UP*tmp_1 - jac_affine_2_1_WHITE_UP*tmp_2;
-       const real_t tmp_4 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666666;
-       const real_t tmp_6 = Dummy_22*jac_affine_0_2_WHITE_UP + jac_affine_1_2_WHITE_UP*tmp_1 + jac_affine_2_2_WHITE_UP*tmp_2;
-       const real_t tmp_9 = jac_affine_0_0_WHITE_UP*2.0;
-       const real_t tmp_10 = jac_affine_0_1_WHITE_UP*2.0;
-       const real_t tmp_11 = tmp_10 - tmp_9;
-       const real_t tmp_12 = jac_affine_1_0_WHITE_UP*2.0;
-       const real_t tmp_13 = jac_affine_1_1_WHITE_UP*2.0;
-       const real_t tmp_14 = -tmp_12 + tmp_13;
-       const real_t tmp_15 = jac_affine_2_0_WHITE_UP*2.0;
-       const real_t tmp_16 = jac_affine_2_1_WHITE_UP*2.0;
-       const real_t tmp_17 = -tmp_15 + tmp_16;
-       const real_t tmp_18 = tmp_11*tmp_9 + tmp_12*tmp_14 + tmp_15*tmp_17;
-       const real_t tmp_20 = jac_affine_0_2_WHITE_UP*2.0;
-       const real_t tmp_21 = -tmp_20;
-       const real_t tmp_22 = tmp_21 + tmp_9;
-       const real_t tmp_23 = jac_affine_1_2_WHITE_UP*2.0;
-       const real_t tmp_24 = -tmp_23;
-       const real_t tmp_25 = tmp_12 + tmp_24;
-       const real_t tmp_26 = jac_affine_2_2_WHITE_UP*2.0;
-       const real_t tmp_27 = -tmp_26;
-       const real_t tmp_28 = tmp_15 + tmp_27;
-       const real_t tmp_29 = tmp_12*tmp_25 + tmp_15*tmp_28 + tmp_22*tmp_9;
-       const real_t tmp_31 = -tmp_10 - tmp_21;
-       const real_t tmp_32 = -tmp_13 - tmp_24;
-       const real_t tmp_33 = -tmp_16 - tmp_27;
-       const real_t tmp_34 = tmp_12*tmp_32 + tmp_15*tmp_33 + tmp_31*tmp_9;
-       const real_t tmp_36 = jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0;
-       const real_t tmp_37 = -tmp_10*tmp_11 - tmp_13*tmp_14 - tmp_16*tmp_17;
-       const real_t tmp_38 = -tmp_10*tmp_22 - tmp_13*tmp_25 - tmp_16*tmp_28;
-       const real_t tmp_39 = -tmp_10*tmp_31 - tmp_13*tmp_32 - tmp_16*tmp_33;
-       const real_t tmp_40 = tmp_11*tmp_20 + tmp_14*tmp_23 + tmp_17*tmp_26;
-       const real_t tmp_41 = tmp_20*tmp_22 + tmp_23*tmp_25 + tmp_26*tmp_28;
-       const real_t tmp_42 = tmp_20*tmp_31 + tmp_23*tmp_32 + tmp_26*tmp_33;
-       const real_t tmp_43 = tmp_11*tmp_22 + tmp_14*tmp_25 + tmp_17*tmp_28;
-       const real_t tmp_44 = tmp_11*tmp_31 + tmp_14*tmp_32 + tmp_17*tmp_33;
-       const real_t tmp_45 = tmp_22*tmp_31 + tmp_25*tmp_32 + tmp_28*tmp_33;
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = jac_affine_0_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_1 = jac_affine_1_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_2 = jac_affine_2_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_3 = -jac_affine_0_1_WHITE_UP*tmp_kernel_op_0 - jac_affine_1_1_WHITE_UP*tmp_kernel_op_1 - jac_affine_2_1_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_4 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_0_2_WHITE_UP*tmp_kernel_op_0 + jac_affine_1_2_WHITE_UP*tmp_kernel_op_1 + jac_affine_2_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_0_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_10 = jac_affine_0_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_11 = tmp_kernel_op_10 - tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_12 = jac_affine_1_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_13 = jac_affine_1_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_14 = -tmp_kernel_op_12 + tmp_kernel_op_13;
+       const walberla::float64 tmp_kernel_op_15 = jac_affine_2_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_16 = jac_affine_2_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_17 = -tmp_kernel_op_15 + tmp_kernel_op_16;
+       const walberla::float64 tmp_kernel_op_18 = tmp_kernel_op_11*tmp_kernel_op_9 + tmp_kernel_op_12*tmp_kernel_op_14 + tmp_kernel_op_15*tmp_kernel_op_17;
+       const walberla::float64 tmp_kernel_op_20 = jac_affine_0_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_21 = -tmp_kernel_op_20;
+       const walberla::float64 tmp_kernel_op_22 = tmp_kernel_op_21 + tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_23 = jac_affine_1_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_24 = -tmp_kernel_op_23;
+       const walberla::float64 tmp_kernel_op_25 = tmp_kernel_op_12 + tmp_kernel_op_24;
+       const walberla::float64 tmp_kernel_op_26 = jac_affine_2_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_27 = -tmp_kernel_op_26;
+       const walberla::float64 tmp_kernel_op_28 = tmp_kernel_op_15 + tmp_kernel_op_27;
+       const walberla::float64 tmp_kernel_op_29 = tmp_kernel_op_12*tmp_kernel_op_25 + tmp_kernel_op_15*tmp_kernel_op_28 + tmp_kernel_op_22*tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_31 = -tmp_kernel_op_10 - tmp_kernel_op_21;
+       const walberla::float64 tmp_kernel_op_32 = -tmp_kernel_op_13 - tmp_kernel_op_24;
+       const walberla::float64 tmp_kernel_op_33 = -tmp_kernel_op_16 - tmp_kernel_op_27;
+       const walberla::float64 tmp_kernel_op_34 = tmp_kernel_op_12*tmp_kernel_op_32 + tmp_kernel_op_15*tmp_kernel_op_33 + tmp_kernel_op_31*tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_36 = jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0;
+       const walberla::float64 tmp_kernel_op_37 = -tmp_kernel_op_10*tmp_kernel_op_11 - tmp_kernel_op_13*tmp_kernel_op_14 - tmp_kernel_op_16*tmp_kernel_op_17;
+       const walberla::float64 tmp_kernel_op_38 = -tmp_kernel_op_10*tmp_kernel_op_22 - tmp_kernel_op_13*tmp_kernel_op_25 - tmp_kernel_op_16*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_39 = -tmp_kernel_op_10*tmp_kernel_op_31 - tmp_kernel_op_13*tmp_kernel_op_32 - tmp_kernel_op_16*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_40 = tmp_kernel_op_11*tmp_kernel_op_20 + tmp_kernel_op_14*tmp_kernel_op_23 + tmp_kernel_op_17*tmp_kernel_op_26;
+       const walberla::float64 tmp_kernel_op_41 = tmp_kernel_op_20*tmp_kernel_op_22 + tmp_kernel_op_23*tmp_kernel_op_25 + tmp_kernel_op_26*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_42 = tmp_kernel_op_20*tmp_kernel_op_31 + tmp_kernel_op_23*tmp_kernel_op_32 + tmp_kernel_op_26*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_43 = tmp_kernel_op_11*tmp_kernel_op_22 + tmp_kernel_op_14*tmp_kernel_op_25 + tmp_kernel_op_17*tmp_kernel_op_28;
+       const walberla::float64 tmp_kernel_op_44 = tmp_kernel_op_11*tmp_kernel_op_31 + tmp_kernel_op_14*tmp_kernel_op_32 + tmp_kernel_op_17*tmp_kernel_op_33;
+       const walberla::float64 tmp_kernel_op_45 = tmp_kernel_op_22*tmp_kernel_op_31 + tmp_kernel_op_25*tmp_kernel_op_32 + tmp_kernel_op_28*tmp_kernel_op_33;
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t tmp_5 = src_dof_1*tmp_4;
-             const real_t tmp_7 = src_dof_2*tmp_4;
-             const real_t tmp_8 = src_dof_0*tmp_4;
-             const real_t tmp_19 = src_dof_3*tmp_4;
-             const real_t tmp_30 = src_dof_4*tmp_4;
-             const real_t tmp_35 = src_dof_5*tmp_4;
-             const real_t elMatVec_0 = tmp_18*tmp_19 + tmp_29*tmp_30 + tmp_3*tmp_5 + tmp_34*tmp_35 + tmp_6*tmp_7 + tmp_8*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
-             const real_t elMatVec_1 = tmp_19*tmp_37 + tmp_3*tmp_8 + tmp_30*tmp_38 + tmp_35*tmp_39 + tmp_36*tmp_7 + tmp_5*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
-             const real_t elMatVec_2 = tmp_19*tmp_40 + tmp_30*tmp_41 + tmp_35*tmp_42 + tmp_36*tmp_5 + tmp_6*tmp_8 + tmp_7*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
-             const real_t elMatVec_3 = tmp_18*tmp_8 + tmp_19*((tmp_11*tmp_11) + (tmp_14*tmp_14) + (tmp_17*tmp_17)) + tmp_30*tmp_43 + tmp_35*tmp_44 + tmp_37*tmp_5 + tmp_40*tmp_7;
-             const real_t elMatVec_4 = tmp_19*tmp_43 + tmp_29*tmp_8 + tmp_30*((tmp_22*tmp_22) + (tmp_25*tmp_25) + (tmp_28*tmp_28)) + tmp_35*tmp_45 + tmp_38*tmp_5 + tmp_41*tmp_7;
-             const real_t elMatVec_5 = tmp_19*tmp_44 + tmp_30*tmp_45 + tmp_34*tmp_8 + tmp_35*((tmp_31*tmp_31) + (tmp_32*tmp_32) + (tmp_33*tmp_33)) + tmp_39*tmp_5 + tmp_42*tmp_7;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_4;
+             const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_4;
+             const walberla::float64 tmp_kernel_op_8 = src_dof_0*tmp_kernel_op_4;
+             const walberla::float64 tmp_kernel_op_19 = src_dof_3*tmp_kernel_op_4;
+             const walberla::float64 tmp_kernel_op_30 = src_dof_4*tmp_kernel_op_4;
+             const walberla::float64 tmp_kernel_op_35 = src_dof_5*tmp_kernel_op_4;
+             const walberla::float64 elMatVec_0 = tmp_kernel_op_18*tmp_kernel_op_19 + tmp_kernel_op_29*tmp_kernel_op_30 + tmp_kernel_op_3*tmp_kernel_op_5 + tmp_kernel_op_34*tmp_kernel_op_35 + tmp_kernel_op_6*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
+             const walberla::float64 elMatVec_1 = tmp_kernel_op_19*tmp_kernel_op_37 + tmp_kernel_op_3*tmp_kernel_op_8 + tmp_kernel_op_30*tmp_kernel_op_38 + tmp_kernel_op_35*tmp_kernel_op_39 + tmp_kernel_op_36*tmp_kernel_op_7 + tmp_kernel_op_5*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
+             const walberla::float64 elMatVec_2 = tmp_kernel_op_19*tmp_kernel_op_40 + tmp_kernel_op_30*tmp_kernel_op_41 + tmp_kernel_op_35*tmp_kernel_op_42 + tmp_kernel_op_36*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
+             const walberla::float64 elMatVec_3 = tmp_kernel_op_18*tmp_kernel_op_8 + tmp_kernel_op_19*((tmp_kernel_op_11*tmp_kernel_op_11) + (tmp_kernel_op_14*tmp_kernel_op_14) + (tmp_kernel_op_17*tmp_kernel_op_17)) + tmp_kernel_op_30*tmp_kernel_op_43 + tmp_kernel_op_35*tmp_kernel_op_44 + tmp_kernel_op_37*tmp_kernel_op_5 + tmp_kernel_op_40*tmp_kernel_op_7;
+             const walberla::float64 elMatVec_4 = tmp_kernel_op_19*tmp_kernel_op_43 + tmp_kernel_op_29*tmp_kernel_op_8 + tmp_kernel_op_30*((tmp_kernel_op_22*tmp_kernel_op_22) + (tmp_kernel_op_25*tmp_kernel_op_25) + (tmp_kernel_op_28*tmp_kernel_op_28)) + tmp_kernel_op_35*tmp_kernel_op_45 + tmp_kernel_op_38*tmp_kernel_op_5 + tmp_kernel_op_41*tmp_kernel_op_7;
+             const walberla::float64 elMatVec_5 = tmp_kernel_op_19*tmp_kernel_op_44 + tmp_kernel_op_30*tmp_kernel_op_45 + tmp_kernel_op_34*tmp_kernel_op_8 + tmp_kernel_op_35*((tmp_kernel_op_31*tmp_kernel_op_31) + (tmp_kernel_op_32*tmp_kernel_op_32) + (tmp_kernel_op_33*tmp_kernel_op_33)) + tmp_kernel_op_39*tmp_kernel_op_5 + tmp_kernel_op_42*tmp_kernel_op_7;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -156,105 +156,105 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_5 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t Dummy_23 = jac_affine_0_0_WHITE_DOWN*4.0;
-       const real_t Dummy_24 = jac_affine_1_0_WHITE_DOWN*4.0;
-       const real_t Dummy_25 = jac_affine_2_0_WHITE_DOWN*4.0;
-       const real_t Dummy_26 = -Dummy_23*jac_affine_0_1_WHITE_DOWN - Dummy_24*jac_affine_1_1_WHITE_DOWN - Dummy_25*jac_affine_2_1_WHITE_DOWN;
-       const real_t Dummy_27 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666666;
-       const real_t Dummy_28 = Dummy_23*jac_affine_0_2_WHITE_DOWN + Dummy_24*jac_affine_1_2_WHITE_DOWN + Dummy_25*jac_affine_2_2_WHITE_DOWN;
-       const real_t Dummy_29 = jac_affine_0_0_WHITE_DOWN*2.0;
-       const real_t Dummy_30 = jac_affine_0_1_WHITE_DOWN*2.0;
-       const real_t Dummy_31 = -Dummy_29 + Dummy_30;
-       const real_t Dummy_32 = jac_affine_1_0_WHITE_DOWN*2.0;
-       const real_t Dummy_33 = jac_affine_1_1_WHITE_DOWN*2.0;
-       const real_t Dummy_34 = -Dummy_32 + Dummy_33;
-       const real_t Dummy_35 = jac_affine_2_0_WHITE_DOWN*2.0;
-       const real_t Dummy_36 = jac_affine_2_1_WHITE_DOWN*2.0;
-       const real_t Dummy_37 = -Dummy_35 + Dummy_36;
-       const real_t Dummy_38 = Dummy_29*Dummy_31 + Dummy_32*Dummy_34 + Dummy_35*Dummy_37;
-       const real_t Dummy_39 = jac_affine_0_2_WHITE_DOWN*2.0;
-       const real_t Dummy_40 = -Dummy_39;
-       const real_t Dummy_41 = Dummy_29 + Dummy_40;
-       const real_t Dummy_42 = jac_affine_1_2_WHITE_DOWN*2.0;
-       const real_t Dummy_43 = -Dummy_42;
-       const real_t Dummy_44 = Dummy_32 + Dummy_43;
-       const real_t Dummy_45 = jac_affine_2_2_WHITE_DOWN*2.0;
-       const real_t Dummy_46 = -Dummy_45;
-       const real_t Dummy_47 = Dummy_35 + Dummy_46;
-       const real_t Dummy_48 = Dummy_29*Dummy_41 + Dummy_32*Dummy_44 + Dummy_35*Dummy_47;
-       const real_t Dummy_49 = -Dummy_30 - Dummy_40;
-       const real_t Dummy_50 = -Dummy_33 - Dummy_43;
-       const real_t Dummy_51 = -Dummy_36 - Dummy_46;
-       const real_t Dummy_52 = Dummy_29*Dummy_49 + Dummy_32*Dummy_50 + Dummy_35*Dummy_51;
-       const real_t Dummy_53 = jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0;
-       const real_t Dummy_54 = -Dummy_30*Dummy_31 - Dummy_33*Dummy_34 - Dummy_36*Dummy_37;
-       const real_t Dummy_55 = -Dummy_30*Dummy_41 - Dummy_33*Dummy_44 - Dummy_36*Dummy_47;
-       const real_t Dummy_56 = -Dummy_30*Dummy_49 - Dummy_33*Dummy_50 - Dummy_36*Dummy_51;
-       const real_t Dummy_57 = Dummy_31*Dummy_39 + Dummy_34*Dummy_42 + Dummy_37*Dummy_45;
-       const real_t Dummy_58 = Dummy_39*Dummy_41 + Dummy_42*Dummy_44 + Dummy_45*Dummy_47;
-       const real_t Dummy_59 = Dummy_39*Dummy_49 + Dummy_42*Dummy_50 + Dummy_45*Dummy_51;
-       const real_t Dummy_60 = Dummy_31*Dummy_41 + Dummy_34*Dummy_44 + Dummy_37*Dummy_47;
-       const real_t Dummy_61 = Dummy_31*Dummy_49 + Dummy_34*Dummy_50 + Dummy_37*Dummy_51;
-       const real_t Dummy_62 = Dummy_41*Dummy_49 + Dummy_44*Dummy_50 + Dummy_47*Dummy_51;
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 Dummy_22 = jac_affine_0_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_23 = jac_affine_1_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_24 = jac_affine_2_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_25 = -Dummy_22*jac_affine_0_1_WHITE_DOWN - Dummy_23*jac_affine_1_1_WHITE_DOWN - Dummy_24*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_26 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_27 = Dummy_22*jac_affine_0_2_WHITE_DOWN + Dummy_23*jac_affine_1_2_WHITE_DOWN + Dummy_24*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_28 = jac_affine_0_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_29 = jac_affine_0_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_30 = -Dummy_28 + Dummy_29;
+       const walberla::float64 Dummy_31 = jac_affine_1_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_32 = jac_affine_1_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_33 = -Dummy_31 + Dummy_32;
+       const walberla::float64 Dummy_34 = jac_affine_2_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_35 = jac_affine_2_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_36 = -Dummy_34 + Dummy_35;
+       const walberla::float64 Dummy_37 = Dummy_28*Dummy_30 + Dummy_31*Dummy_33 + Dummy_34*Dummy_36;
+       const walberla::float64 Dummy_38 = jac_affine_0_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_39 = -Dummy_38;
+       const walberla::float64 Dummy_40 = Dummy_28 + Dummy_39;
+       const walberla::float64 Dummy_41 = jac_affine_1_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_42 = -Dummy_41;
+       const walberla::float64 Dummy_43 = Dummy_31 + Dummy_42;
+       const walberla::float64 Dummy_44 = jac_affine_2_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_45 = -Dummy_44;
+       const walberla::float64 Dummy_46 = Dummy_34 + Dummy_45;
+       const walberla::float64 Dummy_47 = Dummy_28*Dummy_40 + Dummy_31*Dummy_43 + Dummy_34*Dummy_46;
+       const walberla::float64 Dummy_48 = -Dummy_29 - Dummy_39;
+       const walberla::float64 Dummy_49 = -Dummy_32 - Dummy_42;
+       const walberla::float64 Dummy_50 = -Dummy_35 - Dummy_45;
+       const walberla::float64 Dummy_51 = Dummy_28*Dummy_48 + Dummy_31*Dummy_49 + Dummy_34*Dummy_50;
+       const walberla::float64 Dummy_52 = jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0;
+       const walberla::float64 Dummy_53 = -Dummy_29*Dummy_30 - Dummy_32*Dummy_33 - Dummy_35*Dummy_36;
+       const walberla::float64 Dummy_54 = -Dummy_29*Dummy_40 - Dummy_32*Dummy_43 - Dummy_35*Dummy_46;
+       const walberla::float64 Dummy_55 = -Dummy_29*Dummy_48 - Dummy_32*Dummy_49 - Dummy_35*Dummy_50;
+       const walberla::float64 Dummy_56 = Dummy_30*Dummy_38 + Dummy_33*Dummy_41 + Dummy_36*Dummy_44;
+       const walberla::float64 Dummy_57 = Dummy_38*Dummy_40 + Dummy_41*Dummy_43 + Dummy_44*Dummy_46;
+       const walberla::float64 Dummy_58 = Dummy_38*Dummy_48 + Dummy_41*Dummy_49 + Dummy_44*Dummy_50;
+       const walberla::float64 Dummy_59 = Dummy_30*Dummy_40 + Dummy_33*Dummy_43 + Dummy_36*Dummy_46;
+       const walberla::float64 Dummy_60 = Dummy_30*Dummy_48 + Dummy_33*Dummy_49 + Dummy_36*Dummy_50;
+       const walberla::float64 Dummy_61 = Dummy_40*Dummy_48 + Dummy_43*Dummy_49 + Dummy_46*Dummy_50;
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_4 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t tmp_5_WHITE_DOWN = Dummy_27*src_dof_1;
-             const real_t tmp_7_WHITE_DOWN = Dummy_27*src_dof_2;
-             const real_t tmp_8_WHITE_DOWN = Dummy_27*src_dof_0;
-             const real_t tmp_19 = Dummy_27*src_dof_3;
-             const real_t tmp_30 = Dummy_27*src_dof_4;
-             const real_t tmp_35 = Dummy_27*src_dof_5;
-             const real_t elMatVec_0 = Dummy_26*tmp_5_WHITE_DOWN + Dummy_28*tmp_7_WHITE_DOWN + Dummy_38*tmp_19 + Dummy_48*tmp_30 + Dummy_52*tmp_35 + tmp_8_WHITE_DOWN*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
-             const real_t elMatVec_1 = Dummy_26*tmp_8_WHITE_DOWN + Dummy_53*tmp_7_WHITE_DOWN + Dummy_54*tmp_19 + Dummy_55*tmp_30 + Dummy_56*tmp_35 + tmp_5_WHITE_DOWN*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
-             const real_t elMatVec_2 = Dummy_28*tmp_8_WHITE_DOWN + Dummy_53*tmp_5_WHITE_DOWN + Dummy_57*tmp_19 + Dummy_58*tmp_30 + Dummy_59*tmp_35 + tmp_7_WHITE_DOWN*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
-             const real_t elMatVec_3 = Dummy_38*tmp_8_WHITE_DOWN + Dummy_54*tmp_5_WHITE_DOWN + Dummy_57*tmp_7_WHITE_DOWN + Dummy_60*tmp_30 + Dummy_61*tmp_35 + tmp_19*((Dummy_31*Dummy_31) + (Dummy_34*Dummy_34) + (Dummy_37*Dummy_37));
-             const real_t elMatVec_4 = Dummy_48*tmp_8_WHITE_DOWN + Dummy_55*tmp_5_WHITE_DOWN + Dummy_58*tmp_7_WHITE_DOWN + Dummy_60*tmp_19 + Dummy_62*tmp_35 + tmp_30*((Dummy_41*Dummy_41) + (Dummy_44*Dummy_44) + (Dummy_47*Dummy_47));
-             const real_t elMatVec_5 = Dummy_52*tmp_8_WHITE_DOWN + Dummy_56*tmp_5_WHITE_DOWN + Dummy_59*tmp_7_WHITE_DOWN + Dummy_61*tmp_19 + Dummy_62*tmp_30 + tmp_35*((Dummy_49*Dummy_49) + (Dummy_50*Dummy_50) + (Dummy_51*Dummy_51));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 tmp_kernel_op_5 = Dummy_26*src_dof_1;
+             const walberla::float64 tmp_kernel_op_7 = Dummy_26*src_dof_2;
+             const walberla::float64 tmp_kernel_op_8 = Dummy_26*src_dof_0;
+             const walberla::float64 tmp_kernel_op_19 = Dummy_26*src_dof_3;
+             const walberla::float64 tmp_kernel_op_30 = Dummy_26*src_dof_4;
+             const walberla::float64 tmp_kernel_op_35 = Dummy_26*src_dof_5;
+             const walberla::float64 elMatVec_0 = Dummy_25*tmp_kernel_op_5 + Dummy_27*tmp_kernel_op_7 + Dummy_37*tmp_kernel_op_19 + Dummy_47*tmp_kernel_op_30 + Dummy_51*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
+             const walberla::float64 elMatVec_1 = Dummy_25*tmp_kernel_op_8 + Dummy_52*tmp_kernel_op_7 + Dummy_53*tmp_kernel_op_19 + Dummy_54*tmp_kernel_op_30 + Dummy_55*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
+             const walberla::float64 elMatVec_2 = Dummy_27*tmp_kernel_op_8 + Dummy_52*tmp_kernel_op_5 + Dummy_56*tmp_kernel_op_19 + Dummy_57*tmp_kernel_op_30 + Dummy_58*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
+             const walberla::float64 elMatVec_3 = Dummy_37*tmp_kernel_op_8 + Dummy_53*tmp_kernel_op_5 + Dummy_56*tmp_kernel_op_7 + Dummy_59*tmp_kernel_op_30 + Dummy_60*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_30*Dummy_30) + (Dummy_33*Dummy_33) + (Dummy_36*Dummy_36));
+             const walberla::float64 elMatVec_4 = Dummy_47*tmp_kernel_op_8 + Dummy_54*tmp_kernel_op_5 + Dummy_57*tmp_kernel_op_7 + Dummy_59*tmp_kernel_op_19 + Dummy_61*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_40*Dummy_40) + (Dummy_43*Dummy_43) + (Dummy_46*Dummy_46));
+             const walberla::float64 elMatVec_5 = Dummy_51*tmp_kernel_op_8 + Dummy_55*tmp_kernel_op_5 + Dummy_58*tmp_kernel_op_7 + Dummy_60*tmp_kernel_op_19 + Dummy_61*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_48*Dummy_48) + (Dummy_49*Dummy_49) + (Dummy_50*Dummy_50));
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
@@ -263,99 +263,99 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_5 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t Dummy_63 = jac_affine_0_0_BLUE_UP*4.0;
-       const real_t Dummy_64 = jac_affine_1_0_BLUE_UP*4.0;
-       const real_t Dummy_65 = jac_affine_2_0_BLUE_UP*4.0;
-       const real_t Dummy_66 = -Dummy_63*jac_affine_0_1_BLUE_UP - Dummy_64*jac_affine_1_1_BLUE_UP - Dummy_65*jac_affine_2_1_BLUE_UP;
-       const real_t Dummy_67 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666666;
-       const real_t Dummy_68 = Dummy_63*jac_affine_0_2_BLUE_UP + Dummy_64*jac_affine_1_2_BLUE_UP + Dummy_65*jac_affine_2_2_BLUE_UP;
-       const real_t Dummy_69 = jac_affine_0_0_BLUE_UP*2.0;
-       const real_t Dummy_70 = jac_affine_0_1_BLUE_UP*2.0;
-       const real_t Dummy_71 = -Dummy_69 + Dummy_70;
-       const real_t Dummy_72 = jac_affine_1_0_BLUE_UP*2.0;
-       const real_t Dummy_73 = jac_affine_1_1_BLUE_UP*2.0;
-       const real_t Dummy_74 = -Dummy_72 + Dummy_73;
-       const real_t Dummy_75 = jac_affine_2_0_BLUE_UP*2.0;
-       const real_t Dummy_76 = jac_affine_2_1_BLUE_UP*2.0;
-       const real_t Dummy_77 = -Dummy_75 + Dummy_76;
-       const real_t Dummy_78 = Dummy_69*Dummy_71 + Dummy_72*Dummy_74 + Dummy_75*Dummy_77;
-       const real_t Dummy_79 = jac_affine_0_2_BLUE_UP*2.0;
-       const real_t Dummy_80 = -Dummy_79;
-       const real_t Dummy_81 = Dummy_69 + Dummy_80;
-       const real_t Dummy_82 = jac_affine_1_2_BLUE_UP*2.0;
-       const real_t Dummy_83 = -Dummy_82;
-       const real_t Dummy_84 = Dummy_72 + Dummy_83;
-       const real_t Dummy_85 = jac_affine_2_2_BLUE_UP*2.0;
-       const real_t Dummy_86 = -Dummy_85;
-       const real_t Dummy_87 = Dummy_75 + Dummy_86;
-       const real_t Dummy_88 = Dummy_69*Dummy_81 + Dummy_72*Dummy_84 + Dummy_75*Dummy_87;
-       const real_t Dummy_89 = -Dummy_70 - Dummy_80;
-       const real_t Dummy_90 = -Dummy_73 - Dummy_83;
-       const real_t Dummy_91 = -Dummy_76 - Dummy_86;
-       const real_t Dummy_92 = Dummy_69*Dummy_89 + Dummy_72*Dummy_90 + Dummy_75*Dummy_91;
-       const real_t Dummy_93 = jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0;
-       const real_t Dummy_94 = -Dummy_70*Dummy_71 - Dummy_73*Dummy_74 - Dummy_76*Dummy_77;
-       const real_t Dummy_95 = -Dummy_70*Dummy_81 - Dummy_73*Dummy_84 - Dummy_76*Dummy_87;
-       const real_t Dummy_96 = -Dummy_70*Dummy_89 - Dummy_73*Dummy_90 - Dummy_76*Dummy_91;
-       const real_t Dummy_97 = Dummy_71*Dummy_79 + Dummy_74*Dummy_82 + Dummy_77*Dummy_85;
-       const real_t Dummy_98 = Dummy_79*Dummy_81 + Dummy_82*Dummy_84 + Dummy_85*Dummy_87;
-       const real_t Dummy_99 = Dummy_79*Dummy_89 + Dummy_82*Dummy_90 + Dummy_85*Dummy_91;
-       const real_t Dummy_100 = Dummy_71*Dummy_81 + Dummy_74*Dummy_84 + Dummy_77*Dummy_87;
-       const real_t Dummy_101 = Dummy_71*Dummy_89 + Dummy_74*Dummy_90 + Dummy_77*Dummy_91;
-       const real_t Dummy_102 = Dummy_81*Dummy_89 + Dummy_84*Dummy_90 + Dummy_87*Dummy_91;
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 Dummy_62 = jac_affine_0_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_63 = jac_affine_1_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_64 = jac_affine_2_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_65 = -Dummy_62*jac_affine_0_1_BLUE_UP - Dummy_63*jac_affine_1_1_BLUE_UP - Dummy_64*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 Dummy_66 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_67 = Dummy_62*jac_affine_0_2_BLUE_UP + Dummy_63*jac_affine_1_2_BLUE_UP + Dummy_64*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 Dummy_68 = jac_affine_0_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_69 = jac_affine_0_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_70 = -Dummy_68 + Dummy_69;
+       const walberla::float64 Dummy_71 = jac_affine_1_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_72 = jac_affine_1_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_73 = -Dummy_71 + Dummy_72;
+       const walberla::float64 Dummy_74 = jac_affine_2_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_75 = jac_affine_2_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_76 = -Dummy_74 + Dummy_75;
+       const walberla::float64 Dummy_77 = Dummy_68*Dummy_70 + Dummy_71*Dummy_73 + Dummy_74*Dummy_76;
+       const walberla::float64 Dummy_78 = jac_affine_0_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_79 = -Dummy_78;
+       const walberla::float64 Dummy_80 = Dummy_68 + Dummy_79;
+       const walberla::float64 Dummy_81 = jac_affine_1_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_82 = -Dummy_81;
+       const walberla::float64 Dummy_83 = Dummy_71 + Dummy_82;
+       const walberla::float64 Dummy_84 = jac_affine_2_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_85 = -Dummy_84;
+       const walberla::float64 Dummy_86 = Dummy_74 + Dummy_85;
+       const walberla::float64 Dummy_87 = Dummy_68*Dummy_80 + Dummy_71*Dummy_83 + Dummy_74*Dummy_86;
+       const walberla::float64 Dummy_88 = -Dummy_69 - Dummy_79;
+       const walberla::float64 Dummy_89 = -Dummy_72 - Dummy_82;
+       const walberla::float64 Dummy_90 = -Dummy_75 - Dummy_85;
+       const walberla::float64 Dummy_91 = Dummy_68*Dummy_88 + Dummy_71*Dummy_89 + Dummy_74*Dummy_90;
+       const walberla::float64 Dummy_92 = jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0;
+       const walberla::float64 Dummy_93 = -Dummy_69*Dummy_70 - Dummy_72*Dummy_73 - Dummy_75*Dummy_76;
+       const walberla::float64 Dummy_94 = -Dummy_69*Dummy_80 - Dummy_72*Dummy_83 - Dummy_75*Dummy_86;
+       const walberla::float64 Dummy_95 = -Dummy_69*Dummy_88 - Dummy_72*Dummy_89 - Dummy_75*Dummy_90;
+       const walberla::float64 Dummy_96 = Dummy_70*Dummy_78 + Dummy_73*Dummy_81 + Dummy_76*Dummy_84;
+       const walberla::float64 Dummy_97 = Dummy_78*Dummy_80 + Dummy_81*Dummy_83 + Dummy_84*Dummy_86;
+       const walberla::float64 Dummy_98 = Dummy_78*Dummy_88 + Dummy_81*Dummy_89 + Dummy_84*Dummy_90;
+       const walberla::float64 Dummy_99 = Dummy_70*Dummy_80 + Dummy_73*Dummy_83 + Dummy_76*Dummy_86;
+       const walberla::float64 Dummy_100 = Dummy_70*Dummy_88 + Dummy_73*Dummy_89 + Dummy_76*Dummy_90;
+       const walberla::float64 Dummy_101 = Dummy_80*Dummy_88 + Dummy_83*Dummy_89 + Dummy_86*Dummy_90;
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t tmp_5_BLUE_UP = Dummy_67*src_dof_1;
-             const real_t tmp_7 = Dummy_67*src_dof_2;
-             const real_t tmp_8 = Dummy_67*src_dof_0;
-             const real_t tmp_19 = Dummy_67*src_dof_3;
-             const real_t tmp_30 = Dummy_67*src_dof_4;
-             const real_t tmp_35 = Dummy_67*src_dof_5;
-             const real_t elMatVec_0 = Dummy_66*tmp_5_BLUE_UP + Dummy_68*tmp_7 + Dummy_78*tmp_19 + Dummy_88*tmp_30 + Dummy_92*tmp_35 + tmp_8*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
-             const real_t elMatVec_1 = Dummy_66*tmp_8 + Dummy_93*tmp_7 + Dummy_94*tmp_19 + Dummy_95*tmp_30 + Dummy_96*tmp_35 + tmp_5_BLUE_UP*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
-             const real_t elMatVec_2 = Dummy_68*tmp_8 + Dummy_93*tmp_5_BLUE_UP + Dummy_97*tmp_19 + Dummy_98*tmp_30 + Dummy_99*tmp_35 + tmp_7*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
-             const real_t elMatVec_3 = Dummy_100*tmp_30 + Dummy_101*tmp_35 + Dummy_78*tmp_8 + Dummy_94*tmp_5_BLUE_UP + Dummy_97*tmp_7 + tmp_19*((Dummy_71*Dummy_71) + (Dummy_74*Dummy_74) + (Dummy_77*Dummy_77));
-             const real_t elMatVec_4 = Dummy_100*tmp_19 + Dummy_102*tmp_35 + Dummy_88*tmp_8 + Dummy_95*tmp_5_BLUE_UP + Dummy_98*tmp_7 + tmp_30*((Dummy_81*Dummy_81) + (Dummy_84*Dummy_84) + (Dummy_87*Dummy_87));
-             const real_t elMatVec_5 = Dummy_101*tmp_19 + Dummy_102*tmp_30 + Dummy_92*tmp_8 + Dummy_96*tmp_5_BLUE_UP + Dummy_99*tmp_7 + tmp_35*((Dummy_89*Dummy_89) + (Dummy_90*Dummy_90) + (Dummy_91*Dummy_91));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 tmp_kernel_op_5 = Dummy_66*src_dof_1;
+             const walberla::float64 tmp_kernel_op_7 = Dummy_66*src_dof_2;
+             const walberla::float64 tmp_kernel_op_8 = Dummy_66*src_dof_0;
+             const walberla::float64 tmp_kernel_op_19 = Dummy_66*src_dof_3;
+             const walberla::float64 tmp_kernel_op_30 = Dummy_66*src_dof_4;
+             const walberla::float64 tmp_kernel_op_35 = Dummy_66*src_dof_5;
+             const walberla::float64 elMatVec_0 = Dummy_65*tmp_kernel_op_5 + Dummy_67*tmp_kernel_op_7 + Dummy_77*tmp_kernel_op_19 + Dummy_87*tmp_kernel_op_30 + Dummy_91*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
+             const walberla::float64 elMatVec_1 = Dummy_65*tmp_kernel_op_8 + Dummy_92*tmp_kernel_op_7 + Dummy_93*tmp_kernel_op_19 + Dummy_94*tmp_kernel_op_30 + Dummy_95*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
+             const walberla::float64 elMatVec_2 = Dummy_67*tmp_kernel_op_8 + Dummy_92*tmp_kernel_op_5 + Dummy_96*tmp_kernel_op_19 + Dummy_97*tmp_kernel_op_30 + Dummy_98*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
+             const walberla::float64 elMatVec_3 = Dummy_100*tmp_kernel_op_35 + Dummy_77*tmp_kernel_op_8 + Dummy_93*tmp_kernel_op_5 + Dummy_96*tmp_kernel_op_7 + Dummy_99*tmp_kernel_op_30 + tmp_kernel_op_19*((Dummy_70*Dummy_70) + (Dummy_73*Dummy_73) + (Dummy_76*Dummy_76));
+             const walberla::float64 elMatVec_4 = Dummy_101*tmp_kernel_op_35 + Dummy_87*tmp_kernel_op_8 + Dummy_94*tmp_kernel_op_5 + Dummy_97*tmp_kernel_op_7 + Dummy_99*tmp_kernel_op_19 + tmp_kernel_op_30*((Dummy_80*Dummy_80) + (Dummy_83*Dummy_83) + (Dummy_86*Dummy_86));
+             const walberla::float64 elMatVec_5 = Dummy_100*tmp_kernel_op_19 + Dummy_101*tmp_kernel_op_30 + Dummy_91*tmp_kernel_op_8 + Dummy_95*tmp_kernel_op_5 + Dummy_98*tmp_kernel_op_7 + tmp_kernel_op_35*((Dummy_88*Dummy_88) + (Dummy_89*Dummy_89) + (Dummy_90*Dummy_90));
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -364,102 +364,102 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_5 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t Dummy_103 = jac_affine_0_0_BLUE_DOWN*4.0;
-       const real_t Dummy_104 = jac_affine_1_0_BLUE_DOWN*4.0;
-       const real_t Dummy_105 = jac_affine_2_0_BLUE_DOWN*4.0;
-       const real_t Dummy_106 = -Dummy_103*jac_affine_0_1_BLUE_DOWN - Dummy_104*jac_affine_1_1_BLUE_DOWN - Dummy_105*jac_affine_2_1_BLUE_DOWN;
-       const real_t Dummy_107 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666666;
-       const real_t Dummy_108 = Dummy_103*jac_affine_0_2_BLUE_DOWN + Dummy_104*jac_affine_1_2_BLUE_DOWN + Dummy_105*jac_affine_2_2_BLUE_DOWN;
-       const real_t Dummy_109 = jac_affine_0_0_BLUE_DOWN*2.0;
-       const real_t Dummy_110 = jac_affine_0_1_BLUE_DOWN*2.0;
-       const real_t Dummy_111 = -Dummy_109 + Dummy_110;
-       const real_t Dummy_112 = jac_affine_1_0_BLUE_DOWN*2.0;
-       const real_t Dummy_113 = jac_affine_1_1_BLUE_DOWN*2.0;
-       const real_t Dummy_114 = -Dummy_112 + Dummy_113;
-       const real_t Dummy_115 = jac_affine_2_0_BLUE_DOWN*2.0;
-       const real_t Dummy_116 = jac_affine_2_1_BLUE_DOWN*2.0;
-       const real_t Dummy_117 = -Dummy_115 + Dummy_116;
-       const real_t Dummy_118 = Dummy_109*Dummy_111 + Dummy_112*Dummy_114 + Dummy_115*Dummy_117;
-       const real_t Dummy_119 = jac_affine_0_2_BLUE_DOWN*2.0;
-       const real_t Dummy_120 = -Dummy_119;
-       const real_t Dummy_121 = Dummy_109 + Dummy_120;
-       const real_t Dummy_122 = jac_affine_1_2_BLUE_DOWN*2.0;
-       const real_t Dummy_123 = -Dummy_122;
-       const real_t Dummy_124 = Dummy_112 + Dummy_123;
-       const real_t Dummy_125 = jac_affine_2_2_BLUE_DOWN*2.0;
-       const real_t Dummy_126 = -Dummy_125;
-       const real_t Dummy_127 = Dummy_115 + Dummy_126;
-       const real_t Dummy_128 = Dummy_109*Dummy_121 + Dummy_112*Dummy_124 + Dummy_115*Dummy_127;
-       const real_t Dummy_129 = -Dummy_110 - Dummy_120;
-       const real_t Dummy_130 = -Dummy_113 - Dummy_123;
-       const real_t Dummy_131 = -Dummy_116 - Dummy_126;
-       const real_t Dummy_132 = Dummy_109*Dummy_129 + Dummy_112*Dummy_130 + Dummy_115*Dummy_131;
-       const real_t Dummy_133 = jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0;
-       const real_t Dummy_134 = -Dummy_110*Dummy_111 - Dummy_113*Dummy_114 - Dummy_116*Dummy_117;
-       const real_t Dummy_135 = -Dummy_110*Dummy_121 - Dummy_113*Dummy_124 - Dummy_116*Dummy_127;
-       const real_t Dummy_136 = -Dummy_110*Dummy_129 - Dummy_113*Dummy_130 - Dummy_116*Dummy_131;
-       const real_t Dummy_137 = Dummy_111*Dummy_119 + Dummy_114*Dummy_122 + Dummy_117*Dummy_125;
-       const real_t Dummy_138 = Dummy_119*Dummy_121 + Dummy_122*Dummy_124 + Dummy_125*Dummy_127;
-       const real_t Dummy_139 = Dummy_119*Dummy_129 + Dummy_122*Dummy_130 + Dummy_125*Dummy_131;
-       const real_t Dummy_140 = Dummy_111*Dummy_121 + Dummy_114*Dummy_124 + Dummy_117*Dummy_127;
-       const real_t Dummy_141 = Dummy_111*Dummy_129 + Dummy_114*Dummy_130 + Dummy_117*Dummy_131;
-       const real_t Dummy_142 = Dummy_121*Dummy_129 + Dummy_124*Dummy_130 + Dummy_127*Dummy_131;
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 Dummy_102 = jac_affine_0_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_103 = jac_affine_1_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_104 = jac_affine_2_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_105 = -Dummy_102*jac_affine_0_1_BLUE_DOWN - Dummy_103*jac_affine_1_1_BLUE_DOWN - Dummy_104*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_106 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_107 = Dummy_102*jac_affine_0_2_BLUE_DOWN + Dummy_103*jac_affine_1_2_BLUE_DOWN + Dummy_104*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_108 = jac_affine_0_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_109 = jac_affine_0_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_110 = -Dummy_108 + Dummy_109;
+       const walberla::float64 Dummy_111 = jac_affine_1_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_112 = jac_affine_1_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_113 = -Dummy_111 + Dummy_112;
+       const walberla::float64 Dummy_114 = jac_affine_2_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_115 = jac_affine_2_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_116 = -Dummy_114 + Dummy_115;
+       const walberla::float64 Dummy_117 = Dummy_108*Dummy_110 + Dummy_111*Dummy_113 + Dummy_114*Dummy_116;
+       const walberla::float64 Dummy_118 = jac_affine_0_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_119 = -Dummy_118;
+       const walberla::float64 Dummy_120 = Dummy_108 + Dummy_119;
+       const walberla::float64 Dummy_121 = jac_affine_1_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_122 = -Dummy_121;
+       const walberla::float64 Dummy_123 = Dummy_111 + Dummy_122;
+       const walberla::float64 Dummy_124 = jac_affine_2_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_125 = -Dummy_124;
+       const walberla::float64 Dummy_126 = Dummy_114 + Dummy_125;
+       const walberla::float64 Dummy_127 = Dummy_108*Dummy_120 + Dummy_111*Dummy_123 + Dummy_114*Dummy_126;
+       const walberla::float64 Dummy_128 = -Dummy_109 - Dummy_119;
+       const walberla::float64 Dummy_129 = -Dummy_112 - Dummy_122;
+       const walberla::float64 Dummy_130 = -Dummy_115 - Dummy_125;
+       const walberla::float64 Dummy_131 = Dummy_108*Dummy_128 + Dummy_111*Dummy_129 + Dummy_114*Dummy_130;
+       const walberla::float64 Dummy_132 = jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0;
+       const walberla::float64 Dummy_133 = -Dummy_109*Dummy_110 - Dummy_112*Dummy_113 - Dummy_115*Dummy_116;
+       const walberla::float64 Dummy_134 = -Dummy_109*Dummy_120 - Dummy_112*Dummy_123 - Dummy_115*Dummy_126;
+       const walberla::float64 Dummy_135 = -Dummy_109*Dummy_128 - Dummy_112*Dummy_129 - Dummy_115*Dummy_130;
+       const walberla::float64 Dummy_136 = Dummy_110*Dummy_118 + Dummy_113*Dummy_121 + Dummy_116*Dummy_124;
+       const walberla::float64 Dummy_137 = Dummy_118*Dummy_120 + Dummy_121*Dummy_123 + Dummy_124*Dummy_126;
+       const walberla::float64 Dummy_138 = Dummy_118*Dummy_128 + Dummy_121*Dummy_129 + Dummy_124*Dummy_130;
+       const walberla::float64 Dummy_139 = Dummy_110*Dummy_120 + Dummy_113*Dummy_123 + Dummy_116*Dummy_126;
+       const walberla::float64 Dummy_140 = Dummy_110*Dummy_128 + Dummy_113*Dummy_129 + Dummy_116*Dummy_130;
+       const walberla::float64 Dummy_141 = Dummy_120*Dummy_128 + Dummy_123*Dummy_129 + Dummy_126*Dummy_130;
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t tmp_5_BLUE_DOWN = Dummy_107*src_dof_1;
-             const real_t tmp_7_BLUE_DOWN = Dummy_107*src_dof_2;
-             const real_t tmp_8_BLUE_DOWN = Dummy_107*src_dof_0;
-             const real_t tmp_19 = Dummy_107*src_dof_3;
-             const real_t tmp_30 = Dummy_107*src_dof_4;
-             const real_t tmp_35 = Dummy_107*src_dof_5;
-             const real_t elMatVec_0 = Dummy_106*tmp_5_BLUE_DOWN + Dummy_108*tmp_7_BLUE_DOWN + Dummy_118*tmp_19 + Dummy_128*tmp_30 + Dummy_132*tmp_35 + tmp_8_BLUE_DOWN*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
-             const real_t elMatVec_1 = Dummy_106*tmp_8_BLUE_DOWN + Dummy_133*tmp_7_BLUE_DOWN + Dummy_134*tmp_19 + Dummy_135*tmp_30 + Dummy_136*tmp_35 + tmp_5_BLUE_DOWN*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
-             const real_t elMatVec_2 = Dummy_108*tmp_8_BLUE_DOWN + Dummy_133*tmp_5_BLUE_DOWN + Dummy_137*tmp_19 + Dummy_138*tmp_30 + Dummy_139*tmp_35 + tmp_7_BLUE_DOWN*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
-             const real_t elMatVec_3 = Dummy_118*tmp_8_BLUE_DOWN + Dummy_134*tmp_5_BLUE_DOWN + Dummy_137*tmp_7_BLUE_DOWN + Dummy_140*tmp_30 + Dummy_141*tmp_35 + tmp_19*((Dummy_111*Dummy_111) + (Dummy_114*Dummy_114) + (Dummy_117*Dummy_117));
-             const real_t elMatVec_4 = Dummy_128*tmp_8_BLUE_DOWN + Dummy_135*tmp_5_BLUE_DOWN + Dummy_138*tmp_7_BLUE_DOWN + Dummy_140*tmp_19 + Dummy_142*tmp_35 + tmp_30*((Dummy_121*Dummy_121) + (Dummy_124*Dummy_124) + (Dummy_127*Dummy_127));
-             const real_t elMatVec_5 = Dummy_132*tmp_8_BLUE_DOWN + Dummy_136*tmp_5_BLUE_DOWN + Dummy_139*tmp_7_BLUE_DOWN + Dummy_141*tmp_19 + Dummy_142*tmp_30 + tmp_35*((Dummy_129*Dummy_129) + (Dummy_130*Dummy_130) + (Dummy_131*Dummy_131));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 tmp_kernel_op_5 = Dummy_106*src_dof_1;
+             const walberla::float64 tmp_kernel_op_7 = Dummy_106*src_dof_2;
+             const walberla::float64 tmp_kernel_op_8 = Dummy_106*src_dof_0;
+             const walberla::float64 tmp_kernel_op_19 = Dummy_106*src_dof_3;
+             const walberla::float64 tmp_kernel_op_30 = Dummy_106*src_dof_4;
+             const walberla::float64 tmp_kernel_op_35 = Dummy_106*src_dof_5;
+             const walberla::float64 elMatVec_0 = Dummy_105*tmp_kernel_op_5 + Dummy_107*tmp_kernel_op_7 + Dummy_117*tmp_kernel_op_19 + Dummy_127*tmp_kernel_op_30 + Dummy_131*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
+             const walberla::float64 elMatVec_1 = Dummy_105*tmp_kernel_op_8 + Dummy_132*tmp_kernel_op_7 + Dummy_133*tmp_kernel_op_19 + Dummy_134*tmp_kernel_op_30 + Dummy_135*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
+             const walberla::float64 elMatVec_2 = Dummy_107*tmp_kernel_op_8 + Dummy_132*tmp_kernel_op_5 + Dummy_136*tmp_kernel_op_19 + Dummy_137*tmp_kernel_op_30 + Dummy_138*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
+             const walberla::float64 elMatVec_3 = Dummy_117*tmp_kernel_op_8 + Dummy_133*tmp_kernel_op_5 + Dummy_136*tmp_kernel_op_7 + Dummy_139*tmp_kernel_op_30 + Dummy_140*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_110*Dummy_110) + (Dummy_113*Dummy_113) + (Dummy_116*Dummy_116));
+             const walberla::float64 elMatVec_4 = Dummy_127*tmp_kernel_op_8 + Dummy_134*tmp_kernel_op_5 + Dummy_137*tmp_kernel_op_7 + Dummy_139*tmp_kernel_op_19 + Dummy_141*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_120*Dummy_120) + (Dummy_123*Dummy_123) + (Dummy_126*Dummy_126));
+             const walberla::float64 elMatVec_5 = Dummy_131*tmp_kernel_op_8 + Dummy_135*tmp_kernel_op_5 + Dummy_138*tmp_kernel_op_7 + Dummy_140*tmp_kernel_op_19 + Dummy_141*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_128*Dummy_128) + (Dummy_129*Dummy_129) + (Dummy_130*Dummy_130));
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
@@ -468,99 +468,99 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_5 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t Dummy_143 = jac_affine_0_0_GREEN_UP*4.0;
-       const real_t Dummy_144 = jac_affine_1_0_GREEN_UP*4.0;
-       const real_t Dummy_145 = jac_affine_2_0_GREEN_UP*4.0;
-       const real_t Dummy_146 = -Dummy_143*jac_affine_0_1_GREEN_UP - Dummy_144*jac_affine_1_1_GREEN_UP - Dummy_145*jac_affine_2_1_GREEN_UP;
-       const real_t Dummy_147 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666666;
-       const real_t Dummy_148 = Dummy_143*jac_affine_0_2_GREEN_UP + Dummy_144*jac_affine_1_2_GREEN_UP + Dummy_145*jac_affine_2_2_GREEN_UP;
-       const real_t Dummy_149 = jac_affine_0_0_GREEN_UP*2.0;
-       const real_t Dummy_150 = jac_affine_0_1_GREEN_UP*2.0;
-       const real_t Dummy_151 = -Dummy_149 + Dummy_150;
-       const real_t Dummy_152 = jac_affine_1_0_GREEN_UP*2.0;
-       const real_t Dummy_153 = jac_affine_1_1_GREEN_UP*2.0;
-       const real_t Dummy_154 = -Dummy_152 + Dummy_153;
-       const real_t Dummy_155 = jac_affine_2_0_GREEN_UP*2.0;
-       const real_t Dummy_156 = jac_affine_2_1_GREEN_UP*2.0;
-       const real_t Dummy_157 = -Dummy_155 + Dummy_156;
-       const real_t Dummy_158 = Dummy_149*Dummy_151 + Dummy_152*Dummy_154 + Dummy_155*Dummy_157;
-       const real_t Dummy_159 = jac_affine_0_2_GREEN_UP*2.0;
-       const real_t Dummy_160 = -Dummy_159;
-       const real_t Dummy_161 = Dummy_149 + Dummy_160;
-       const real_t Dummy_162 = jac_affine_1_2_GREEN_UP*2.0;
-       const real_t Dummy_163 = -Dummy_162;
-       const real_t Dummy_164 = Dummy_152 + Dummy_163;
-       const real_t Dummy_165 = jac_affine_2_2_GREEN_UP*2.0;
-       const real_t Dummy_166 = -Dummy_165;
-       const real_t Dummy_167 = Dummy_155 + Dummy_166;
-       const real_t Dummy_168 = Dummy_149*Dummy_161 + Dummy_152*Dummy_164 + Dummy_155*Dummy_167;
-       const real_t Dummy_169 = -Dummy_150 - Dummy_160;
-       const real_t Dummy_170 = -Dummy_153 - Dummy_163;
-       const real_t Dummy_171 = -Dummy_156 - Dummy_166;
-       const real_t Dummy_172 = Dummy_149*Dummy_169 + Dummy_152*Dummy_170 + Dummy_155*Dummy_171;
-       const real_t Dummy_173 = jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0;
-       const real_t Dummy_174 = -Dummy_150*Dummy_151 - Dummy_153*Dummy_154 - Dummy_156*Dummy_157;
-       const real_t Dummy_175 = -Dummy_150*Dummy_161 - Dummy_153*Dummy_164 - Dummy_156*Dummy_167;
-       const real_t Dummy_176 = -Dummy_150*Dummy_169 - Dummy_153*Dummy_170 - Dummy_156*Dummy_171;
-       const real_t Dummy_177 = Dummy_151*Dummy_159 + Dummy_154*Dummy_162 + Dummy_157*Dummy_165;
-       const real_t Dummy_178 = Dummy_159*Dummy_161 + Dummy_162*Dummy_164 + Dummy_165*Dummy_167;
-       const real_t Dummy_179 = Dummy_159*Dummy_169 + Dummy_162*Dummy_170 + Dummy_165*Dummy_171;
-       const real_t Dummy_180 = Dummy_151*Dummy_161 + Dummy_154*Dummy_164 + Dummy_157*Dummy_167;
-       const real_t Dummy_181 = Dummy_151*Dummy_169 + Dummy_154*Dummy_170 + Dummy_157*Dummy_171;
-       const real_t Dummy_182 = Dummy_161*Dummy_169 + Dummy_164*Dummy_170 + Dummy_167*Dummy_171;
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 Dummy_142 = jac_affine_0_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_143 = jac_affine_1_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_144 = jac_affine_2_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_145 = -Dummy_142*jac_affine_0_1_GREEN_UP - Dummy_143*jac_affine_1_1_GREEN_UP - Dummy_144*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 Dummy_146 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_147 = Dummy_142*jac_affine_0_2_GREEN_UP + Dummy_143*jac_affine_1_2_GREEN_UP + Dummy_144*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 Dummy_148 = jac_affine_0_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_149 = jac_affine_0_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_150 = -Dummy_148 + Dummy_149;
+       const walberla::float64 Dummy_151 = jac_affine_1_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_152 = jac_affine_1_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_153 = -Dummy_151 + Dummy_152;
+       const walberla::float64 Dummy_154 = jac_affine_2_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_155 = jac_affine_2_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_156 = -Dummy_154 + Dummy_155;
+       const walberla::float64 Dummy_157 = Dummy_148*Dummy_150 + Dummy_151*Dummy_153 + Dummy_154*Dummy_156;
+       const walberla::float64 Dummy_158 = jac_affine_0_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_159 = -Dummy_158;
+       const walberla::float64 Dummy_160 = Dummy_148 + Dummy_159;
+       const walberla::float64 Dummy_161 = jac_affine_1_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_162 = -Dummy_161;
+       const walberla::float64 Dummy_163 = Dummy_151 + Dummy_162;
+       const walberla::float64 Dummy_164 = jac_affine_2_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_165 = -Dummy_164;
+       const walberla::float64 Dummy_166 = Dummy_154 + Dummy_165;
+       const walberla::float64 Dummy_167 = Dummy_148*Dummy_160 + Dummy_151*Dummy_163 + Dummy_154*Dummy_166;
+       const walberla::float64 Dummy_168 = -Dummy_149 - Dummy_159;
+       const walberla::float64 Dummy_169 = -Dummy_152 - Dummy_162;
+       const walberla::float64 Dummy_170 = -Dummy_155 - Dummy_165;
+       const walberla::float64 Dummy_171 = Dummy_148*Dummy_168 + Dummy_151*Dummy_169 + Dummy_154*Dummy_170;
+       const walberla::float64 Dummy_172 = jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0;
+       const walberla::float64 Dummy_173 = -Dummy_149*Dummy_150 - Dummy_152*Dummy_153 - Dummy_155*Dummy_156;
+       const walberla::float64 Dummy_174 = -Dummy_149*Dummy_160 - Dummy_152*Dummy_163 - Dummy_155*Dummy_166;
+       const walberla::float64 Dummy_175 = -Dummy_149*Dummy_168 - Dummy_152*Dummy_169 - Dummy_155*Dummy_170;
+       const walberla::float64 Dummy_176 = Dummy_150*Dummy_158 + Dummy_153*Dummy_161 + Dummy_156*Dummy_164;
+       const walberla::float64 Dummy_177 = Dummy_158*Dummy_160 + Dummy_161*Dummy_163 + Dummy_164*Dummy_166;
+       const walberla::float64 Dummy_178 = Dummy_158*Dummy_168 + Dummy_161*Dummy_169 + Dummy_164*Dummy_170;
+       const walberla::float64 Dummy_179 = Dummy_150*Dummy_160 + Dummy_153*Dummy_163 + Dummy_156*Dummy_166;
+       const walberla::float64 Dummy_180 = Dummy_150*Dummy_168 + Dummy_153*Dummy_169 + Dummy_156*Dummy_170;
+       const walberla::float64 Dummy_181 = Dummy_160*Dummy_168 + Dummy_163*Dummy_169 + Dummy_166*Dummy_170;
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t tmp_5_GREEN_UP = Dummy_147*src_dof_1;
-             const real_t tmp_7 = Dummy_147*src_dof_2;
-             const real_t tmp_8 = Dummy_147*src_dof_0;
-             const real_t tmp_19 = Dummy_147*src_dof_3;
-             const real_t tmp_30 = Dummy_147*src_dof_4;
-             const real_t tmp_35 = Dummy_147*src_dof_5;
-             const real_t elMatVec_0 = Dummy_146*tmp_5_GREEN_UP + Dummy_148*tmp_7 + Dummy_158*tmp_19 + Dummy_168*tmp_30 + Dummy_172*tmp_35 + tmp_8*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
-             const real_t elMatVec_1 = Dummy_146*tmp_8 + Dummy_173*tmp_7 + Dummy_174*tmp_19 + Dummy_175*tmp_30 + Dummy_176*tmp_35 + tmp_5_GREEN_UP*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
-             const real_t elMatVec_2 = Dummy_148*tmp_8 + Dummy_173*tmp_5_GREEN_UP + Dummy_177*tmp_19 + Dummy_178*tmp_30 + Dummy_179*tmp_35 + tmp_7*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
-             const real_t elMatVec_3 = Dummy_158*tmp_8 + Dummy_174*tmp_5_GREEN_UP + Dummy_177*tmp_7 + Dummy_180*tmp_30 + Dummy_181*tmp_35 + tmp_19*((Dummy_151*Dummy_151) + (Dummy_154*Dummy_154) + (Dummy_157*Dummy_157));
-             const real_t elMatVec_4 = Dummy_168*tmp_8 + Dummy_175*tmp_5_GREEN_UP + Dummy_178*tmp_7 + Dummy_180*tmp_19 + Dummy_182*tmp_35 + tmp_30*((Dummy_161*Dummy_161) + (Dummy_164*Dummy_164) + (Dummy_167*Dummy_167));
-             const real_t elMatVec_5 = Dummy_172*tmp_8 + Dummy_176*tmp_5_GREEN_UP + Dummy_179*tmp_7 + Dummy_181*tmp_19 + Dummy_182*tmp_30 + tmp_35*((Dummy_169*Dummy_169) + (Dummy_170*Dummy_170) + (Dummy_171*Dummy_171));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 tmp_kernel_op_5 = Dummy_146*src_dof_1;
+             const walberla::float64 tmp_kernel_op_7 = Dummy_146*src_dof_2;
+             const walberla::float64 tmp_kernel_op_8 = Dummy_146*src_dof_0;
+             const walberla::float64 tmp_kernel_op_19 = Dummy_146*src_dof_3;
+             const walberla::float64 tmp_kernel_op_30 = Dummy_146*src_dof_4;
+             const walberla::float64 tmp_kernel_op_35 = Dummy_146*src_dof_5;
+             const walberla::float64 elMatVec_0 = Dummy_145*tmp_kernel_op_5 + Dummy_147*tmp_kernel_op_7 + Dummy_157*tmp_kernel_op_19 + Dummy_167*tmp_kernel_op_30 + Dummy_171*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
+             const walberla::float64 elMatVec_1 = Dummy_145*tmp_kernel_op_8 + Dummy_172*tmp_kernel_op_7 + Dummy_173*tmp_kernel_op_19 + Dummy_174*tmp_kernel_op_30 + Dummy_175*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
+             const walberla::float64 elMatVec_2 = Dummy_147*tmp_kernel_op_8 + Dummy_172*tmp_kernel_op_5 + Dummy_176*tmp_kernel_op_19 + Dummy_177*tmp_kernel_op_30 + Dummy_178*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
+             const walberla::float64 elMatVec_3 = Dummy_157*tmp_kernel_op_8 + Dummy_173*tmp_kernel_op_5 + Dummy_176*tmp_kernel_op_7 + Dummy_179*tmp_kernel_op_30 + Dummy_180*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_150*Dummy_150) + (Dummy_153*Dummy_153) + (Dummy_156*Dummy_156));
+             const walberla::float64 elMatVec_4 = Dummy_167*tmp_kernel_op_8 + Dummy_174*tmp_kernel_op_5 + Dummy_177*tmp_kernel_op_7 + Dummy_179*tmp_kernel_op_19 + Dummy_181*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_160*Dummy_160) + (Dummy_163*Dummy_163) + (Dummy_166*Dummy_166));
+             const walberla::float64 elMatVec_5 = Dummy_171*tmp_kernel_op_8 + Dummy_175*tmp_kernel_op_5 + Dummy_178*tmp_kernel_op_7 + Dummy_180*tmp_kernel_op_19 + Dummy_181*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_168*Dummy_168) + (Dummy_169*Dummy_169) + (Dummy_170*Dummy_170));
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
@@ -569,102 +569,102 @@ void N1E1ElementwiseCurlCurl::apply_macro_3D( real_t * RESTRICT  _data_dst, real
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_5 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t Dummy_183 = jac_affine_0_0_GREEN_DOWN*4.0;
-       const real_t Dummy_184 = jac_affine_1_0_GREEN_DOWN*4.0;
-       const real_t Dummy_185 = jac_affine_2_0_GREEN_DOWN*4.0;
-       const real_t Dummy_186 = -Dummy_183*jac_affine_0_1_GREEN_DOWN - Dummy_184*jac_affine_1_1_GREEN_DOWN - Dummy_185*jac_affine_2_1_GREEN_DOWN;
-       const real_t Dummy_187 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666666;
-       const real_t Dummy_188 = Dummy_183*jac_affine_0_2_GREEN_DOWN + Dummy_184*jac_affine_1_2_GREEN_DOWN + Dummy_185*jac_affine_2_2_GREEN_DOWN;
-       const real_t Dummy_189 = jac_affine_0_0_GREEN_DOWN*2.0;
-       const real_t Dummy_190 = jac_affine_0_1_GREEN_DOWN*2.0;
-       const real_t Dummy_191 = -Dummy_189 + Dummy_190;
-       const real_t Dummy_192 = jac_affine_1_0_GREEN_DOWN*2.0;
-       const real_t Dummy_193 = jac_affine_1_1_GREEN_DOWN*2.0;
-       const real_t Dummy_194 = -Dummy_192 + Dummy_193;
-       const real_t Dummy_195 = jac_affine_2_0_GREEN_DOWN*2.0;
-       const real_t Dummy_196 = jac_affine_2_1_GREEN_DOWN*2.0;
-       const real_t Dummy_197 = -Dummy_195 + Dummy_196;
-       const real_t Dummy_198 = Dummy_189*Dummy_191 + Dummy_192*Dummy_194 + Dummy_195*Dummy_197;
-       const real_t Dummy_199 = jac_affine_0_2_GREEN_DOWN*2.0;
-       const real_t Dummy_200 = -Dummy_199;
-       const real_t Dummy_201 = Dummy_189 + Dummy_200;
-       const real_t Dummy_202 = jac_affine_1_2_GREEN_DOWN*2.0;
-       const real_t Dummy_203 = -Dummy_202;
-       const real_t Dummy_204 = Dummy_192 + Dummy_203;
-       const real_t Dummy_205 = jac_affine_2_2_GREEN_DOWN*2.0;
-       const real_t Dummy_206 = -Dummy_205;
-       const real_t Dummy_207 = Dummy_195 + Dummy_206;
-       const real_t Dummy_208 = Dummy_189*Dummy_201 + Dummy_192*Dummy_204 + Dummy_195*Dummy_207;
-       const real_t Dummy_209 = -Dummy_190 - Dummy_200;
-       const real_t Dummy_210 = -Dummy_193 - Dummy_203;
-       const real_t Dummy_211 = -Dummy_196 - Dummy_206;
-       const real_t Dummy_212 = Dummy_189*Dummy_209 + Dummy_192*Dummy_210 + Dummy_195*Dummy_211;
-       const real_t Dummy_213 = jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0;
-       const real_t Dummy_214 = -Dummy_190*Dummy_191 - Dummy_193*Dummy_194 - Dummy_196*Dummy_197;
-       const real_t Dummy_215 = -Dummy_190*Dummy_201 - Dummy_193*Dummy_204 - Dummy_196*Dummy_207;
-       const real_t Dummy_216 = -Dummy_190*Dummy_209 - Dummy_193*Dummy_210 - Dummy_196*Dummy_211;
-       const real_t Dummy_217 = Dummy_191*Dummy_199 + Dummy_194*Dummy_202 + Dummy_197*Dummy_205;
-       const real_t Dummy_218 = Dummy_199*Dummy_201 + Dummy_202*Dummy_204 + Dummy_205*Dummy_207;
-       const real_t Dummy_219 = Dummy_199*Dummy_209 + Dummy_202*Dummy_210 + Dummy_205*Dummy_211;
-       const real_t Dummy_220 = Dummy_191*Dummy_201 + Dummy_194*Dummy_204 + Dummy_197*Dummy_207;
-       const real_t Dummy_221 = Dummy_191*Dummy_209 + Dummy_194*Dummy_210 + Dummy_197*Dummy_211;
-       const real_t Dummy_222 = Dummy_201*Dummy_209 + Dummy_204*Dummy_210 + Dummy_207*Dummy_211;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 Dummy_182 = jac_affine_0_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_183 = jac_affine_1_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_184 = jac_affine_2_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_185 = -Dummy_182*jac_affine_0_1_GREEN_DOWN - Dummy_183*jac_affine_1_1_GREEN_DOWN - Dummy_184*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_186 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_187 = Dummy_182*jac_affine_0_2_GREEN_DOWN + Dummy_183*jac_affine_1_2_GREEN_DOWN + Dummy_184*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_188 = jac_affine_0_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_189 = jac_affine_0_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_190 = -Dummy_188 + Dummy_189;
+       const walberla::float64 Dummy_191 = jac_affine_1_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_192 = jac_affine_1_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_193 = -Dummy_191 + Dummy_192;
+       const walberla::float64 Dummy_194 = jac_affine_2_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_195 = jac_affine_2_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_196 = -Dummy_194 + Dummy_195;
+       const walberla::float64 Dummy_197 = Dummy_188*Dummy_190 + Dummy_191*Dummy_193 + Dummy_194*Dummy_196;
+       const walberla::float64 Dummy_198 = jac_affine_0_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_199 = -Dummy_198;
+       const walberla::float64 Dummy_200 = Dummy_188 + Dummy_199;
+       const walberla::float64 Dummy_201 = jac_affine_1_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_202 = -Dummy_201;
+       const walberla::float64 Dummy_203 = Dummy_191 + Dummy_202;
+       const walberla::float64 Dummy_204 = jac_affine_2_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_205 = -Dummy_204;
+       const walberla::float64 Dummy_206 = Dummy_194 + Dummy_205;
+       const walberla::float64 Dummy_207 = Dummy_188*Dummy_200 + Dummy_191*Dummy_203 + Dummy_194*Dummy_206;
+       const walberla::float64 Dummy_208 = -Dummy_189 - Dummy_199;
+       const walberla::float64 Dummy_209 = -Dummy_192 - Dummy_202;
+       const walberla::float64 Dummy_210 = -Dummy_195 - Dummy_205;
+       const walberla::float64 Dummy_211 = Dummy_188*Dummy_208 + Dummy_191*Dummy_209 + Dummy_194*Dummy_210;
+       const walberla::float64 Dummy_212 = jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0;
+       const walberla::float64 Dummy_213 = -Dummy_189*Dummy_190 - Dummy_192*Dummy_193 - Dummy_195*Dummy_196;
+       const walberla::float64 Dummy_214 = -Dummy_189*Dummy_200 - Dummy_192*Dummy_203 - Dummy_195*Dummy_206;
+       const walberla::float64 Dummy_215 = -Dummy_189*Dummy_208 - Dummy_192*Dummy_209 - Dummy_195*Dummy_210;
+       const walberla::float64 Dummy_216 = Dummy_190*Dummy_198 + Dummy_193*Dummy_201 + Dummy_196*Dummy_204;
+       const walberla::float64 Dummy_217 = Dummy_198*Dummy_200 + Dummy_201*Dummy_203 + Dummy_204*Dummy_206;
+       const walberla::float64 Dummy_218 = Dummy_198*Dummy_208 + Dummy_201*Dummy_209 + Dummy_204*Dummy_210;
+       const walberla::float64 Dummy_219 = Dummy_190*Dummy_200 + Dummy_193*Dummy_203 + Dummy_196*Dummy_206;
+       const walberla::float64 Dummy_220 = Dummy_190*Dummy_208 + Dummy_193*Dummy_209 + Dummy_196*Dummy_210;
+       const walberla::float64 Dummy_221 = Dummy_200*Dummy_208 + Dummy_203*Dummy_209 + Dummy_206*Dummy_210;
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t tmp_5_GREEN_DOWN = Dummy_187*src_dof_1;
-             const real_t tmp_7_GREEN_DOWN = Dummy_187*src_dof_2;
-             const real_t tmp_8_GREEN_DOWN = Dummy_187*src_dof_0;
-             const real_t tmp_19 = Dummy_187*src_dof_3;
-             const real_t tmp_30 = Dummy_187*src_dof_4;
-             const real_t tmp_35 = Dummy_187*src_dof_5;
-             const real_t elMatVec_0 = Dummy_186*tmp_5_GREEN_DOWN + Dummy_188*tmp_7_GREEN_DOWN + Dummy_198*tmp_19 + Dummy_208*tmp_30 + Dummy_212*tmp_35 + tmp_8_GREEN_DOWN*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
-             const real_t elMatVec_1 = Dummy_186*tmp_8_GREEN_DOWN + Dummy_213*tmp_7_GREEN_DOWN + Dummy_214*tmp_19 + Dummy_215*tmp_30 + Dummy_216*tmp_35 + tmp_5_GREEN_DOWN*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
-             const real_t elMatVec_2 = Dummy_188*tmp_8_GREEN_DOWN + Dummy_213*tmp_5_GREEN_DOWN + Dummy_217*tmp_19 + Dummy_218*tmp_30 + Dummy_219*tmp_35 + tmp_7_GREEN_DOWN*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
-             const real_t elMatVec_3 = Dummy_198*tmp_8_GREEN_DOWN + Dummy_214*tmp_5_GREEN_DOWN + Dummy_217*tmp_7_GREEN_DOWN + Dummy_220*tmp_30 + Dummy_221*tmp_35 + tmp_19*((Dummy_191*Dummy_191) + (Dummy_194*Dummy_194) + (Dummy_197*Dummy_197));
-             const real_t elMatVec_4 = Dummy_208*tmp_8_GREEN_DOWN + Dummy_215*tmp_5_GREEN_DOWN + Dummy_218*tmp_7_GREEN_DOWN + Dummy_220*tmp_19 + Dummy_222*tmp_35 + tmp_30*((Dummy_201*Dummy_201) + (Dummy_204*Dummy_204) + (Dummy_207*Dummy_207));
-             const real_t elMatVec_5 = Dummy_212*tmp_8_GREEN_DOWN + Dummy_216*tmp_5_GREEN_DOWN + Dummy_219*tmp_7_GREEN_DOWN + Dummy_221*tmp_19 + Dummy_222*tmp_30 + tmp_35*((Dummy_209*Dummy_209) + (Dummy_210*Dummy_210) + (Dummy_211*Dummy_211));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_4 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 tmp_kernel_op_5 = Dummy_186*src_dof_1;
+             const walberla::float64 tmp_kernel_op_7 = Dummy_186*src_dof_2;
+             const walberla::float64 tmp_kernel_op_8 = Dummy_186*src_dof_0;
+             const walberla::float64 tmp_kernel_op_19 = Dummy_186*src_dof_3;
+             const walberla::float64 tmp_kernel_op_30 = Dummy_186*src_dof_4;
+             const walberla::float64 tmp_kernel_op_35 = Dummy_186*src_dof_5;
+             const walberla::float64 elMatVec_0 = Dummy_185*tmp_kernel_op_5 + Dummy_187*tmp_kernel_op_7 + Dummy_197*tmp_kernel_op_19 + Dummy_207*tmp_kernel_op_30 + Dummy_211*tmp_kernel_op_35 + tmp_kernel_op_8*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
+             const walberla::float64 elMatVec_1 = Dummy_185*tmp_kernel_op_8 + Dummy_212*tmp_kernel_op_7 + Dummy_213*tmp_kernel_op_19 + Dummy_214*tmp_kernel_op_30 + Dummy_215*tmp_kernel_op_35 + tmp_kernel_op_5*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
+             const walberla::float64 elMatVec_2 = Dummy_187*tmp_kernel_op_8 + Dummy_212*tmp_kernel_op_5 + Dummy_216*tmp_kernel_op_19 + Dummy_217*tmp_kernel_op_30 + Dummy_218*tmp_kernel_op_35 + tmp_kernel_op_7*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
+             const walberla::float64 elMatVec_3 = Dummy_197*tmp_kernel_op_8 + Dummy_213*tmp_kernel_op_5 + Dummy_216*tmp_kernel_op_7 + Dummy_219*tmp_kernel_op_30 + Dummy_220*tmp_kernel_op_35 + tmp_kernel_op_19*((Dummy_190*Dummy_190) + (Dummy_193*Dummy_193) + (Dummy_196*Dummy_196));
+             const walberla::float64 elMatVec_4 = Dummy_207*tmp_kernel_op_8 + Dummy_214*tmp_kernel_op_5 + Dummy_217*tmp_kernel_op_7 + Dummy_219*tmp_kernel_op_19 + Dummy_221*tmp_kernel_op_35 + tmp_kernel_op_30*((Dummy_200*Dummy_200) + (Dummy_203*Dummy_203) + (Dummy_206*Dummy_206));
+             const walberla::float64 elMatVec_5 = Dummy_211*tmp_kernel_op_8 + Dummy_215*tmp_kernel_op_5 + Dummy_218*tmp_kernel_op_7 + Dummy_220*tmp_kernel_op_19 + Dummy_221*tmp_kernel_op_30 + tmp_kernel_op_35*((Dummy_208*Dummy_208) + (Dummy_209*Dummy_209) + (Dummy_210*Dummy_210));
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
diff --git a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 8de5f940f5d2950e22375c2e710f1de6897a435b..9573ebd357ad53a78eb1d79c066a458733a57e40 100644
--- a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -58,48 +58,48 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t Dummy_604 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666666;
-       const real_t tmp_1 = jac_affine_0_0_WHITE_UP*2.0;
-       const real_t tmp_2 = jac_affine_0_1_WHITE_UP*2.0;
-       const real_t tmp_3 = jac_affine_1_0_WHITE_UP*2.0;
-       const real_t tmp_4 = jac_affine_1_1_WHITE_UP*2.0;
-       const real_t tmp_5 = jac_affine_2_0_WHITE_UP*2.0;
-       const real_t tmp_6 = jac_affine_2_1_WHITE_UP*2.0;
-       const real_t tmp_7 = jac_affine_0_2_WHITE_UP*-2.0;
-       const real_t tmp_8 = jac_affine_1_2_WHITE_UP*-2.0;
-       const real_t tmp_9 = jac_affine_2_2_WHITE_UP*-2.0;
-       const real_t elMatDiag_0 = Dummy_604*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
-       const real_t elMatDiag_1 = Dummy_604*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
-       const real_t elMatDiag_2 = Dummy_604*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
-       const real_t elMatDiag_3 = Dummy_604*(((-tmp_1 + tmp_2)*(-tmp_1 + tmp_2)) + ((-tmp_3 + tmp_4)*(-tmp_3 + tmp_4)) + ((-tmp_5 + tmp_6)*(-tmp_5 + tmp_6)));
-       const real_t elMatDiag_4 = Dummy_604*(((tmp_1 + tmp_7)*(tmp_1 + tmp_7)) + ((tmp_3 + tmp_8)*(tmp_3 + tmp_8)) + ((tmp_5 + tmp_9)*(tmp_5 + tmp_9)));
-       const real_t elMatDiag_5 = Dummy_604*(((-tmp_2 - tmp_7)*(-tmp_2 - tmp_7)) + ((-tmp_4 - tmp_8)*(-tmp_4 - tmp_8)) + ((-tmp_6 - tmp_9)*(-tmp_6 - tmp_9)));
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_1 = jac_affine_0_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_2 = jac_affine_0_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_3 = jac_affine_1_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_4 = jac_affine_1_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_5 = jac_affine_2_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_2_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_7 = jac_affine_0_2_WHITE_UP*-2.0;
+       const walberla::float64 tmp_kernel_op_8 = jac_affine_1_2_WHITE_UP*-2.0;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_2_2_WHITE_UP*-2.0;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
+       const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*(((-tmp_kernel_op_1 + tmp_kernel_op_2)*(-tmp_kernel_op_1 + tmp_kernel_op_2)) + ((-tmp_kernel_op_3 + tmp_kernel_op_4)*(-tmp_kernel_op_3 + tmp_kernel_op_4)) + ((-tmp_kernel_op_5 + tmp_kernel_op_6)*(-tmp_kernel_op_5 + tmp_kernel_op_6)));
+       const walberla::float64 elMatDiag_4 = tmp_kernel_op_0*(((tmp_kernel_op_1 + tmp_kernel_op_7)*(tmp_kernel_op_1 + tmp_kernel_op_7)) + ((tmp_kernel_op_3 + tmp_kernel_op_8)*(tmp_kernel_op_3 + tmp_kernel_op_8)) + ((tmp_kernel_op_5 + tmp_kernel_op_9)*(tmp_kernel_op_5 + tmp_kernel_op_9)));
+       const walberla::float64 elMatDiag_5 = tmp_kernel_op_0*(((-tmp_kernel_op_2 - tmp_kernel_op_7)*(-tmp_kernel_op_2 - tmp_kernel_op_7)) + ((-tmp_kernel_op_4 - tmp_kernel_op_8)*(-tmp_kernel_op_4 - tmp_kernel_op_8)) + ((-tmp_kernel_op_6 - tmp_kernel_op_9)*(-tmp_kernel_op_6 - tmp_kernel_op_9)));
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -114,311 +114,311 @@ void N1E1ElementwiseCurlCurl::computeInverseDiagonalOperatorValues_macro_3D( rea
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatDiag_5 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t Dummy_605 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666666;
-       const real_t Dummy_606 = jac_affine_0_0_WHITE_DOWN*2.0;
-       const real_t Dummy_607 = jac_affine_0_1_WHITE_DOWN*2.0;
-       const real_t Dummy_608 = jac_affine_1_0_WHITE_DOWN*2.0;
-       const real_t Dummy_609 = jac_affine_1_1_WHITE_DOWN*2.0;
-       const real_t Dummy_610 = jac_affine_2_0_WHITE_DOWN*2.0;
-       const real_t Dummy_611 = jac_affine_2_1_WHITE_DOWN*2.0;
-       const real_t Dummy_612 = jac_affine_0_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_613 = jac_affine_1_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_614 = jac_affine_2_2_WHITE_DOWN*-2.0;
-       const real_t Dummy_615 = Dummy_605*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
-       const real_t Dummy_616 = Dummy_605*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
-       const real_t Dummy_617 = Dummy_605*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
-       const real_t Dummy_618 = Dummy_605*(((-Dummy_606 + Dummy_607)*(-Dummy_606 + Dummy_607)) + ((-Dummy_608 + Dummy_609)*(-Dummy_608 + Dummy_609)) + ((-Dummy_610 + Dummy_611)*(-Dummy_610 + Dummy_611)));
-       const real_t Dummy_619 = Dummy_605*(((Dummy_606 + Dummy_612)*(Dummy_606 + Dummy_612)) + ((Dummy_608 + Dummy_613)*(Dummy_608 + Dummy_613)) + ((Dummy_610 + Dummy_614)*(Dummy_610 + Dummy_614)));
-       const real_t Dummy_620 = Dummy_605*(((-Dummy_607 - Dummy_612)*(-Dummy_607 - Dummy_612)) + ((-Dummy_609 - Dummy_613)*(-Dummy_609 - Dummy_613)) + ((-Dummy_611 - Dummy_614)*(-Dummy_611 - Dummy_614)));
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 Dummy_602 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_603 = jac_affine_0_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_604 = jac_affine_0_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_605 = jac_affine_1_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_606 = jac_affine_1_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_607 = jac_affine_2_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_608 = jac_affine_2_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_609 = jac_affine_0_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_610 = jac_affine_1_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_611 = jac_affine_2_2_WHITE_DOWN*-2.0;
+       const walberla::float64 Dummy_612 = Dummy_602*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_613 = Dummy_602*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_614 = Dummy_602*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_615 = Dummy_602*(((-Dummy_603 + Dummy_604)*(-Dummy_603 + Dummy_604)) + ((-Dummy_605 + Dummy_606)*(-Dummy_605 + Dummy_606)) + ((-Dummy_607 + Dummy_608)*(-Dummy_607 + Dummy_608)));
+       const walberla::float64 Dummy_616 = Dummy_602*(((Dummy_603 + Dummy_609)*(Dummy_603 + Dummy_609)) + ((Dummy_605 + Dummy_610)*(Dummy_605 + Dummy_610)) + ((Dummy_607 + Dummy_611)*(Dummy_607 + Dummy_611)));
+       const walberla::float64 Dummy_617 = Dummy_602*(((-Dummy_604 - Dummy_609)*(-Dummy_604 - Dummy_609)) + ((-Dummy_606 - Dummy_610)*(-Dummy_606 - Dummy_610)) + ((-Dummy_608 - Dummy_611)*(-Dummy_608 - Dummy_611)));
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_615 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = Dummy_616 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_617 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_618 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_619 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_620 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_612 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1] = Dummy_613 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_614 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_615 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_616 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_617 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t Dummy_621 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666666;
-       const real_t Dummy_622 = jac_affine_0_0_BLUE_UP*2.0;
-       const real_t Dummy_623 = jac_affine_0_1_BLUE_UP*2.0;
-       const real_t Dummy_624 = jac_affine_1_0_BLUE_UP*2.0;
-       const real_t Dummy_625 = jac_affine_1_1_BLUE_UP*2.0;
-       const real_t Dummy_626 = jac_affine_2_0_BLUE_UP*2.0;
-       const real_t Dummy_627 = jac_affine_2_1_BLUE_UP*2.0;
-       const real_t Dummy_628 = jac_affine_0_2_BLUE_UP*-2.0;
-       const real_t Dummy_629 = jac_affine_1_2_BLUE_UP*-2.0;
-       const real_t Dummy_630 = jac_affine_2_2_BLUE_UP*-2.0;
-       const real_t Dummy_631 = Dummy_621*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
-       const real_t Dummy_632 = Dummy_621*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
-       const real_t Dummy_633 = Dummy_621*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
-       const real_t Dummy_634 = Dummy_621*(((-Dummy_622 + Dummy_623)*(-Dummy_622 + Dummy_623)) + ((-Dummy_624 + Dummy_625)*(-Dummy_624 + Dummy_625)) + ((-Dummy_626 + Dummy_627)*(-Dummy_626 + Dummy_627)));
-       const real_t Dummy_635 = Dummy_621*(((Dummy_622 + Dummy_628)*(Dummy_622 + Dummy_628)) + ((Dummy_624 + Dummy_629)*(Dummy_624 + Dummy_629)) + ((Dummy_626 + Dummy_630)*(Dummy_626 + Dummy_630)));
-       const real_t Dummy_636 = Dummy_621*(((-Dummy_623 - Dummy_628)*(-Dummy_623 - Dummy_628)) + ((-Dummy_625 - Dummy_629)*(-Dummy_625 - Dummy_629)) + ((-Dummy_627 - Dummy_630)*(-Dummy_627 - Dummy_630)));
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 Dummy_618 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_619 = jac_affine_0_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_620 = jac_affine_0_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_621 = jac_affine_1_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_622 = jac_affine_1_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_623 = jac_affine_2_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_624 = jac_affine_2_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_625 = jac_affine_0_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_626 = jac_affine_1_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_627 = jac_affine_2_2_BLUE_UP*-2.0;
+       const walberla::float64 Dummy_628 = Dummy_618*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_629 = Dummy_618*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_630 = Dummy_618*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_631 = Dummy_618*(((-Dummy_619 + Dummy_620)*(-Dummy_619 + Dummy_620)) + ((-Dummy_621 + Dummy_622)*(-Dummy_621 + Dummy_622)) + ((-Dummy_623 + Dummy_624)*(-Dummy_623 + Dummy_624)));
+       const walberla::float64 Dummy_632 = Dummy_618*(((Dummy_619 + Dummy_625)*(Dummy_619 + Dummy_625)) + ((Dummy_621 + Dummy_626)*(Dummy_621 + Dummy_626)) + ((Dummy_623 + Dummy_627)*(Dummy_623 + Dummy_627)));
+       const walberla::float64 Dummy_633 = Dummy_618*(((-Dummy_620 - Dummy_625)*(-Dummy_620 - Dummy_625)) + ((-Dummy_622 - Dummy_626)*(-Dummy_622 - Dummy_626)) + ((-Dummy_624 - Dummy_627)*(-Dummy_624 - Dummy_627)));
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_631 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_632 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_633 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_634 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_635 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_636 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_628 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_629 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_630 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_631 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_632 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_633 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t Dummy_637 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666666;
-       const real_t Dummy_638 = jac_affine_0_0_BLUE_DOWN*2.0;
-       const real_t Dummy_639 = jac_affine_0_1_BLUE_DOWN*2.0;
-       const real_t Dummy_640 = jac_affine_1_0_BLUE_DOWN*2.0;
-       const real_t Dummy_641 = jac_affine_1_1_BLUE_DOWN*2.0;
-       const real_t Dummy_642 = jac_affine_2_0_BLUE_DOWN*2.0;
-       const real_t Dummy_643 = jac_affine_2_1_BLUE_DOWN*2.0;
-       const real_t Dummy_644 = jac_affine_0_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_645 = jac_affine_1_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_646 = jac_affine_2_2_BLUE_DOWN*-2.0;
-       const real_t Dummy_647 = Dummy_637*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
-       const real_t Dummy_648 = Dummy_637*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
-       const real_t Dummy_649 = Dummy_637*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
-       const real_t Dummy_650 = Dummy_637*(((-Dummy_638 + Dummy_639)*(-Dummy_638 + Dummy_639)) + ((-Dummy_640 + Dummy_641)*(-Dummy_640 + Dummy_641)) + ((-Dummy_642 + Dummy_643)*(-Dummy_642 + Dummy_643)));
-       const real_t Dummy_651 = Dummy_637*(((Dummy_638 + Dummy_644)*(Dummy_638 + Dummy_644)) + ((Dummy_640 + Dummy_645)*(Dummy_640 + Dummy_645)) + ((Dummy_642 + Dummy_646)*(Dummy_642 + Dummy_646)));
-       const real_t Dummy_652 = Dummy_637*(((-Dummy_639 - Dummy_644)*(-Dummy_639 - Dummy_644)) + ((-Dummy_641 - Dummy_645)*(-Dummy_641 - Dummy_645)) + ((-Dummy_643 - Dummy_646)*(-Dummy_643 - Dummy_646)));
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 Dummy_634 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_635 = jac_affine_0_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_636 = jac_affine_0_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_637 = jac_affine_1_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_638 = jac_affine_1_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_639 = jac_affine_2_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_640 = jac_affine_2_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_641 = jac_affine_0_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_642 = jac_affine_1_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_643 = jac_affine_2_2_BLUE_DOWN*-2.0;
+       const walberla::float64 Dummy_644 = Dummy_634*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_645 = Dummy_634*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_646 = Dummy_634*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_647 = Dummy_634*(((-Dummy_635 + Dummy_636)*(-Dummy_635 + Dummy_636)) + ((-Dummy_637 + Dummy_638)*(-Dummy_637 + Dummy_638)) + ((-Dummy_639 + Dummy_640)*(-Dummy_639 + Dummy_640)));
+       const walberla::float64 Dummy_648 = Dummy_634*(((Dummy_635 + Dummy_641)*(Dummy_635 + Dummy_641)) + ((Dummy_637 + Dummy_642)*(Dummy_637 + Dummy_642)) + ((Dummy_639 + Dummy_643)*(Dummy_639 + Dummy_643)));
+       const walberla::float64 Dummy_649 = Dummy_634*(((-Dummy_636 - Dummy_641)*(-Dummy_636 - Dummy_641)) + ((-Dummy_638 - Dummy_642)*(-Dummy_638 - Dummy_642)) + ((-Dummy_640 - Dummy_643)*(-Dummy_640 - Dummy_643)));
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_647 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_648 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_649 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_650 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_651 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_652 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_644 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_645 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_646 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_647 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_648 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_649 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t Dummy_653 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666666;
-       const real_t Dummy_654 = jac_affine_0_0_GREEN_UP*2.0;
-       const real_t Dummy_655 = jac_affine_0_1_GREEN_UP*2.0;
-       const real_t Dummy_656 = jac_affine_1_0_GREEN_UP*2.0;
-       const real_t Dummy_657 = jac_affine_1_1_GREEN_UP*2.0;
-       const real_t Dummy_658 = jac_affine_2_0_GREEN_UP*2.0;
-       const real_t Dummy_659 = jac_affine_2_1_GREEN_UP*2.0;
-       const real_t Dummy_660 = jac_affine_0_2_GREEN_UP*-2.0;
-       const real_t Dummy_661 = jac_affine_1_2_GREEN_UP*-2.0;
-       const real_t Dummy_662 = jac_affine_2_2_GREEN_UP*-2.0;
-       const real_t Dummy_663 = Dummy_653*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
-       const real_t Dummy_664 = Dummy_653*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
-       const real_t Dummy_665 = Dummy_653*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
-       const real_t Dummy_666 = Dummy_653*(((-Dummy_654 + Dummy_655)*(-Dummy_654 + Dummy_655)) + ((-Dummy_656 + Dummy_657)*(-Dummy_656 + Dummy_657)) + ((-Dummy_658 + Dummy_659)*(-Dummy_658 + Dummy_659)));
-       const real_t Dummy_667 = Dummy_653*(((Dummy_654 + Dummy_660)*(Dummy_654 + Dummy_660)) + ((Dummy_656 + Dummy_661)*(Dummy_656 + Dummy_661)) + ((Dummy_658 + Dummy_662)*(Dummy_658 + Dummy_662)));
-       const real_t Dummy_668 = Dummy_653*(((-Dummy_655 - Dummy_660)*(-Dummy_655 - Dummy_660)) + ((-Dummy_657 - Dummy_661)*(-Dummy_657 - Dummy_661)) + ((-Dummy_659 - Dummy_662)*(-Dummy_659 - Dummy_662)));
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 Dummy_650 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_651 = jac_affine_0_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_652 = jac_affine_0_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_653 = jac_affine_1_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_654 = jac_affine_1_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_655 = jac_affine_2_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_656 = jac_affine_2_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_657 = jac_affine_0_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_658 = jac_affine_1_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_659 = jac_affine_2_2_GREEN_UP*-2.0;
+       const walberla::float64 Dummy_660 = Dummy_650*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_661 = Dummy_650*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_662 = Dummy_650*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_663 = Dummy_650*(((-Dummy_651 + Dummy_652)*(-Dummy_651 + Dummy_652)) + ((-Dummy_653 + Dummy_654)*(-Dummy_653 + Dummy_654)) + ((-Dummy_655 + Dummy_656)*(-Dummy_655 + Dummy_656)));
+       const walberla::float64 Dummy_664 = Dummy_650*(((Dummy_651 + Dummy_657)*(Dummy_651 + Dummy_657)) + ((Dummy_653 + Dummy_658)*(Dummy_653 + Dummy_658)) + ((Dummy_655 + Dummy_659)*(Dummy_655 + Dummy_659)));
+       const walberla::float64 Dummy_665 = Dummy_650*(((-Dummy_652 - Dummy_657)*(-Dummy_652 - Dummy_657)) + ((-Dummy_654 - Dummy_658)*(-Dummy_654 - Dummy_658)) + ((-Dummy_656 - Dummy_659)*(-Dummy_656 - Dummy_659)));
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_663 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_664 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_665 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_666 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_667 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_668 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_660 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_661 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_662 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_663 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_664 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_665 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t Dummy_669 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666666;
-       const real_t Dummy_670 = jac_affine_0_0_GREEN_DOWN*2.0;
-       const real_t Dummy_671 = jac_affine_0_1_GREEN_DOWN*2.0;
-       const real_t Dummy_672 = jac_affine_1_0_GREEN_DOWN*2.0;
-       const real_t Dummy_673 = jac_affine_1_1_GREEN_DOWN*2.0;
-       const real_t Dummy_674 = jac_affine_2_0_GREEN_DOWN*2.0;
-       const real_t Dummy_675 = jac_affine_2_1_GREEN_DOWN*2.0;
-       const real_t Dummy_676 = jac_affine_0_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_677 = jac_affine_1_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_678 = jac_affine_2_2_GREEN_DOWN*-2.0;
-       const real_t Dummy_679 = Dummy_669*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
-       const real_t Dummy_680 = Dummy_669*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
-       const real_t Dummy_681 = Dummy_669*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
-       const real_t Dummy_682 = Dummy_669*(((-Dummy_670 + Dummy_671)*(-Dummy_670 + Dummy_671)) + ((-Dummy_672 + Dummy_673)*(-Dummy_672 + Dummy_673)) + ((-Dummy_674 + Dummy_675)*(-Dummy_674 + Dummy_675)));
-       const real_t Dummy_683 = Dummy_669*(((Dummy_670 + Dummy_676)*(Dummy_670 + Dummy_676)) + ((Dummy_672 + Dummy_677)*(Dummy_672 + Dummy_677)) + ((Dummy_674 + Dummy_678)*(Dummy_674 + Dummy_678)));
-       const real_t Dummy_684 = Dummy_669*(((-Dummy_671 - Dummy_676)*(-Dummy_671 - Dummy_676)) + ((-Dummy_673 - Dummy_677)*(-Dummy_673 - Dummy_677)) + ((-Dummy_675 - Dummy_678)*(-Dummy_675 - Dummy_678)));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 Dummy_666 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_667 = jac_affine_0_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_668 = jac_affine_0_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_669 = jac_affine_1_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_670 = jac_affine_1_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_671 = jac_affine_2_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_672 = jac_affine_2_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_673 = jac_affine_0_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_674 = jac_affine_1_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_675 = jac_affine_2_2_GREEN_DOWN*-2.0;
+       const walberla::float64 Dummy_676 = Dummy_666*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_677 = Dummy_666*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_678 = Dummy_666*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_679 = Dummy_666*(((-Dummy_667 + Dummy_668)*(-Dummy_667 + Dummy_668)) + ((-Dummy_669 + Dummy_670)*(-Dummy_669 + Dummy_670)) + ((-Dummy_671 + Dummy_672)*(-Dummy_671 + Dummy_672)));
+       const walberla::float64 Dummy_680 = Dummy_666*(((Dummy_667 + Dummy_673)*(Dummy_667 + Dummy_673)) + ((Dummy_669 + Dummy_674)*(Dummy_669 + Dummy_674)) + ((Dummy_671 + Dummy_675)*(Dummy_671 + Dummy_675)));
+       const walberla::float64 Dummy_681 = Dummy_666*(((-Dummy_668 - Dummy_673)*(-Dummy_668 - Dummy_673)) + ((-Dummy_670 - Dummy_674)*(-Dummy_670 - Dummy_674)) + ((-Dummy_672 - Dummy_675)*(-Dummy_672 - Dummy_675)));
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_679 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_680 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_681 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_682 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_683 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_684 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_676 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_677 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = Dummy_678 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_679 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))] = Dummy_680 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = Dummy_681 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
     }
diff --git a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp
index 7aab845cfeb726acb094b29ffa33dbac0d858ecb..235a012f5002b12f4ea12bc2002edf271dd343f2 100644
--- a/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp
+++ b/operators/curl_curl/noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp
@@ -58,108 +58,108 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, const Cell& cell, const uint_t level, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, const Cell& cell, const uint_t level, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t Dummy_223 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666666;
-       const real_t tmp_1 = jac_affine_0_0_WHITE_UP*4.0;
-       const real_t tmp_2 = jac_affine_1_0_WHITE_UP*4.0;
-       const real_t tmp_3 = jac_affine_2_0_WHITE_UP*4.0;
-       const real_t tmp_4 = Dummy_223*(-jac_affine_0_1_WHITE_UP*tmp_1 - jac_affine_1_1_WHITE_UP*tmp_2 - jac_affine_2_1_WHITE_UP*tmp_3);
-       const real_t tmp_5 = Dummy_223*(jac_affine_0_2_WHITE_UP*tmp_1 + jac_affine_1_2_WHITE_UP*tmp_2 + jac_affine_2_2_WHITE_UP*tmp_3);
-       const real_t tmp_6 = jac_affine_0_0_WHITE_UP*2.0;
-       const real_t tmp_7 = jac_affine_0_1_WHITE_UP*2.0;
-       const real_t tmp_8 = -tmp_6 + tmp_7;
-       const real_t tmp_9 = jac_affine_1_0_WHITE_UP*2.0;
-       const real_t tmp_10 = jac_affine_1_1_WHITE_UP*2.0;
-       const real_t tmp_11 = tmp_10 - tmp_9;
-       const real_t tmp_12 = jac_affine_2_0_WHITE_UP*2.0;
-       const real_t tmp_13 = jac_affine_2_1_WHITE_UP*2.0;
-       const real_t tmp_14 = -tmp_12 + tmp_13;
-       const real_t tmp_15 = Dummy_223*(tmp_11*tmp_9 + tmp_12*tmp_14 + tmp_6*tmp_8);
-       const real_t tmp_16 = jac_affine_0_2_WHITE_UP*2.0;
-       const real_t tmp_17 = -tmp_16;
-       const real_t tmp_18 = tmp_17 + tmp_6;
-       const real_t tmp_19 = jac_affine_1_2_WHITE_UP*2.0;
-       const real_t tmp_20 = -tmp_19;
-       const real_t tmp_21 = tmp_20 + tmp_9;
-       const real_t tmp_22 = jac_affine_2_2_WHITE_UP*2.0;
-       const real_t tmp_23 = -tmp_22;
-       const real_t tmp_24 = tmp_12 + tmp_23;
-       const real_t tmp_25 = Dummy_223*(tmp_12*tmp_24 + tmp_18*tmp_6 + tmp_21*tmp_9);
-       const real_t tmp_26 = -tmp_17 - tmp_7;
-       const real_t tmp_27 = -tmp_10 - tmp_20;
-       const real_t tmp_28 = -tmp_13 - tmp_23;
-       const real_t tmp_29 = Dummy_223*(tmp_12*tmp_28 + tmp_26*tmp_6 + tmp_27*tmp_9);
-       const real_t tmp_30 = Dummy_223*(jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0);
-       const real_t tmp_31 = Dummy_223*(-tmp_10*tmp_11 - tmp_13*tmp_14 - tmp_7*tmp_8);
-       const real_t tmp_32 = Dummy_223*(-tmp_10*tmp_21 - tmp_13*tmp_24 - tmp_18*tmp_7);
-       const real_t tmp_33 = Dummy_223*(-tmp_10*tmp_27 - tmp_13*tmp_28 - tmp_26*tmp_7);
-       const real_t tmp_34 = Dummy_223*(tmp_11*tmp_19 + tmp_14*tmp_22 + tmp_16*tmp_8);
-       const real_t tmp_35 = Dummy_223*(tmp_16*tmp_18 + tmp_19*tmp_21 + tmp_22*tmp_24);
-       const real_t tmp_36 = Dummy_223*(tmp_16*tmp_26 + tmp_19*tmp_27 + tmp_22*tmp_28);
-       const real_t tmp_37 = Dummy_223*(tmp_11*tmp_21 + tmp_14*tmp_24 + tmp_18*tmp_8);
-       const real_t tmp_38 = Dummy_223*(tmp_11*tmp_27 + tmp_14*tmp_28 + tmp_26*tmp_8);
-       const real_t tmp_39 = Dummy_223*(tmp_18*tmp_26 + tmp_21*tmp_27 + tmp_24*tmp_28);
-       const real_t elMat_0_0 = Dummy_223*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
-       const real_t elMat_0_1 = tmp_4;
-       const real_t elMat_0_2 = tmp_5;
-       const real_t elMat_0_3 = tmp_15;
-       const real_t elMat_0_4 = tmp_25;
-       const real_t elMat_0_5 = tmp_29;
-       const real_t elMat_1_0 = tmp_4;
-       const real_t elMat_1_1 = Dummy_223*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
-       const real_t elMat_1_2 = tmp_30;
-       const real_t elMat_1_3 = tmp_31;
-       const real_t elMat_1_4 = tmp_32;
-       const real_t elMat_1_5 = tmp_33;
-       const real_t elMat_2_0 = tmp_5;
-       const real_t elMat_2_1 = tmp_30;
-       const real_t elMat_2_2 = Dummy_223*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
-       const real_t elMat_2_3 = tmp_34;
-       const real_t elMat_2_4 = tmp_35;
-       const real_t elMat_2_5 = tmp_36;
-       const real_t elMat_3_0 = tmp_15;
-       const real_t elMat_3_1 = tmp_31;
-       const real_t elMat_3_2 = tmp_34;
-       const real_t elMat_3_3 = Dummy_223*((tmp_11*tmp_11) + (tmp_14*tmp_14) + (tmp_8*tmp_8));
-       const real_t elMat_3_4 = tmp_37;
-       const real_t elMat_3_5 = tmp_38;
-       const real_t elMat_4_0 = tmp_25;
-       const real_t elMat_4_1 = tmp_32;
-       const real_t elMat_4_2 = tmp_35;
-       const real_t elMat_4_3 = tmp_37;
-       const real_t elMat_4_4 = Dummy_223*((tmp_18*tmp_18) + (tmp_21*tmp_21) + (tmp_24*tmp_24));
-       const real_t elMat_4_5 = tmp_39;
-       const real_t elMat_5_0 = tmp_29;
-       const real_t elMat_5_1 = tmp_33;
-       const real_t elMat_5_2 = tmp_36;
-       const real_t elMat_5_3 = tmp_38;
-       const real_t elMat_5_4 = tmp_39;
-       const real_t elMat_5_5 = Dummy_223*((tmp_26*tmp_26) + (tmp_27*tmp_27) + (tmp_28*tmp_28));
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = 1.0 / (abs_det_jac_affine_WHITE_UP)*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_1 = jac_affine_0_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_2 = jac_affine_1_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_3 = jac_affine_2_0_WHITE_UP*4.0;
+       const walberla::float64 tmp_kernel_op_4 = tmp_kernel_op_0*(-jac_affine_0_1_WHITE_UP*tmp_kernel_op_1 - jac_affine_1_1_WHITE_UP*tmp_kernel_op_2 - jac_affine_2_1_WHITE_UP*tmp_kernel_op_3);
+       const walberla::float64 tmp_kernel_op_5 = tmp_kernel_op_0*(jac_affine_0_2_WHITE_UP*tmp_kernel_op_1 + jac_affine_1_2_WHITE_UP*tmp_kernel_op_2 + jac_affine_2_2_WHITE_UP*tmp_kernel_op_3);
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_0_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_7 = jac_affine_0_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_8 = -tmp_kernel_op_6 + tmp_kernel_op_7;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_1_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_10 = jac_affine_1_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_11 = tmp_kernel_op_10 - tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_12 = jac_affine_2_0_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_13 = jac_affine_2_1_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_14 = -tmp_kernel_op_12 + tmp_kernel_op_13;
+       const walberla::float64 tmp_kernel_op_15 = tmp_kernel_op_0*(tmp_kernel_op_11*tmp_kernel_op_9 + tmp_kernel_op_12*tmp_kernel_op_14 + tmp_kernel_op_6*tmp_kernel_op_8);
+       const walberla::float64 tmp_kernel_op_16 = jac_affine_0_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_17 = -tmp_kernel_op_16;
+       const walberla::float64 tmp_kernel_op_18 = tmp_kernel_op_17 + tmp_kernel_op_6;
+       const walberla::float64 tmp_kernel_op_19 = jac_affine_1_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_20 = -tmp_kernel_op_19;
+       const walberla::float64 tmp_kernel_op_21 = tmp_kernel_op_20 + tmp_kernel_op_9;
+       const walberla::float64 tmp_kernel_op_22 = jac_affine_2_2_WHITE_UP*2.0;
+       const walberla::float64 tmp_kernel_op_23 = -tmp_kernel_op_22;
+       const walberla::float64 tmp_kernel_op_24 = tmp_kernel_op_12 + tmp_kernel_op_23;
+       const walberla::float64 tmp_kernel_op_25 = tmp_kernel_op_0*(tmp_kernel_op_12*tmp_kernel_op_24 + tmp_kernel_op_18*tmp_kernel_op_6 + tmp_kernel_op_21*tmp_kernel_op_9);
+       const walberla::float64 tmp_kernel_op_26 = -tmp_kernel_op_17 - tmp_kernel_op_7;
+       const walberla::float64 tmp_kernel_op_27 = -tmp_kernel_op_10 - tmp_kernel_op_20;
+       const walberla::float64 tmp_kernel_op_28 = -tmp_kernel_op_13 - tmp_kernel_op_23;
+       const walberla::float64 tmp_kernel_op_29 = tmp_kernel_op_0*(tmp_kernel_op_12*tmp_kernel_op_28 + tmp_kernel_op_26*tmp_kernel_op_6 + tmp_kernel_op_27*tmp_kernel_op_9);
+       const walberla::float64 tmp_kernel_op_30 = tmp_kernel_op_0*(jac_affine_0_1_WHITE_UP*jac_affine_0_2_WHITE_UP*-4.0 + jac_affine_1_1_WHITE_UP*jac_affine_1_2_WHITE_UP*-4.0 + jac_affine_2_1_WHITE_UP*jac_affine_2_2_WHITE_UP*-4.0);
+       const walberla::float64 tmp_kernel_op_31 = tmp_kernel_op_0*(-tmp_kernel_op_10*tmp_kernel_op_11 - tmp_kernel_op_13*tmp_kernel_op_14 - tmp_kernel_op_7*tmp_kernel_op_8);
+       const walberla::float64 tmp_kernel_op_32 = tmp_kernel_op_0*(-tmp_kernel_op_10*tmp_kernel_op_21 - tmp_kernel_op_13*tmp_kernel_op_24 - tmp_kernel_op_18*tmp_kernel_op_7);
+       const walberla::float64 tmp_kernel_op_33 = tmp_kernel_op_0*(-tmp_kernel_op_10*tmp_kernel_op_27 - tmp_kernel_op_13*tmp_kernel_op_28 - tmp_kernel_op_26*tmp_kernel_op_7);
+       const walberla::float64 tmp_kernel_op_34 = tmp_kernel_op_0*(tmp_kernel_op_11*tmp_kernel_op_19 + tmp_kernel_op_14*tmp_kernel_op_22 + tmp_kernel_op_16*tmp_kernel_op_8);
+       const walberla::float64 tmp_kernel_op_35 = tmp_kernel_op_0*(tmp_kernel_op_16*tmp_kernel_op_18 + tmp_kernel_op_19*tmp_kernel_op_21 + tmp_kernel_op_22*tmp_kernel_op_24);
+       const walberla::float64 tmp_kernel_op_36 = tmp_kernel_op_0*(tmp_kernel_op_16*tmp_kernel_op_26 + tmp_kernel_op_19*tmp_kernel_op_27 + tmp_kernel_op_22*tmp_kernel_op_28);
+       const walberla::float64 tmp_kernel_op_37 = tmp_kernel_op_0*(tmp_kernel_op_11*tmp_kernel_op_21 + tmp_kernel_op_14*tmp_kernel_op_24 + tmp_kernel_op_18*tmp_kernel_op_8);
+       const walberla::float64 tmp_kernel_op_38 = tmp_kernel_op_0*(tmp_kernel_op_11*tmp_kernel_op_27 + tmp_kernel_op_14*tmp_kernel_op_28 + tmp_kernel_op_26*tmp_kernel_op_8);
+       const walberla::float64 tmp_kernel_op_39 = tmp_kernel_op_0*(tmp_kernel_op_18*tmp_kernel_op_26 + tmp_kernel_op_21*tmp_kernel_op_27 + tmp_kernel_op_24*tmp_kernel_op_28);
+       const walberla::float64 elMat_0_0 = tmp_kernel_op_0*((jac_affine_0_0_WHITE_UP*jac_affine_0_0_WHITE_UP)*4.0 + (jac_affine_1_0_WHITE_UP*jac_affine_1_0_WHITE_UP)*4.0 + (jac_affine_2_0_WHITE_UP*jac_affine_2_0_WHITE_UP)*4.0);
+       const walberla::float64 elMat_0_1 = tmp_kernel_op_4;
+       const walberla::float64 elMat_0_2 = tmp_kernel_op_5;
+       const walberla::float64 elMat_0_3 = tmp_kernel_op_15;
+       const walberla::float64 elMat_0_4 = tmp_kernel_op_25;
+       const walberla::float64 elMat_0_5 = tmp_kernel_op_29;
+       const walberla::float64 elMat_1_0 = tmp_kernel_op_4;
+       const walberla::float64 elMat_1_1 = tmp_kernel_op_0*((jac_affine_0_1_WHITE_UP*jac_affine_0_1_WHITE_UP)*4.0 + (jac_affine_1_1_WHITE_UP*jac_affine_1_1_WHITE_UP)*4.0 + (jac_affine_2_1_WHITE_UP*jac_affine_2_1_WHITE_UP)*4.0);
+       const walberla::float64 elMat_1_2 = tmp_kernel_op_30;
+       const walberla::float64 elMat_1_3 = tmp_kernel_op_31;
+       const walberla::float64 elMat_1_4 = tmp_kernel_op_32;
+       const walberla::float64 elMat_1_5 = tmp_kernel_op_33;
+       const walberla::float64 elMat_2_0 = tmp_kernel_op_5;
+       const walberla::float64 elMat_2_1 = tmp_kernel_op_30;
+       const walberla::float64 elMat_2_2 = tmp_kernel_op_0*((jac_affine_0_2_WHITE_UP*jac_affine_0_2_WHITE_UP)*4.0 + (jac_affine_1_2_WHITE_UP*jac_affine_1_2_WHITE_UP)*4.0 + (jac_affine_2_2_WHITE_UP*jac_affine_2_2_WHITE_UP)*4.0);
+       const walberla::float64 elMat_2_3 = tmp_kernel_op_34;
+       const walberla::float64 elMat_2_4 = tmp_kernel_op_35;
+       const walberla::float64 elMat_2_5 = tmp_kernel_op_36;
+       const walberla::float64 elMat_3_0 = tmp_kernel_op_15;
+       const walberla::float64 elMat_3_1 = tmp_kernel_op_31;
+       const walberla::float64 elMat_3_2 = tmp_kernel_op_34;
+       const walberla::float64 elMat_3_3 = tmp_kernel_op_0*((tmp_kernel_op_11*tmp_kernel_op_11) + (tmp_kernel_op_14*tmp_kernel_op_14) + (tmp_kernel_op_8*tmp_kernel_op_8));
+       const walberla::float64 elMat_3_4 = tmp_kernel_op_37;
+       const walberla::float64 elMat_3_5 = tmp_kernel_op_38;
+       const walberla::float64 elMat_4_0 = tmp_kernel_op_25;
+       const walberla::float64 elMat_4_1 = tmp_kernel_op_32;
+       const walberla::float64 elMat_4_2 = tmp_kernel_op_35;
+       const walberla::float64 elMat_4_3 = tmp_kernel_op_37;
+       const walberla::float64 elMat_4_4 = tmp_kernel_op_0*((tmp_kernel_op_18*tmp_kernel_op_18) + (tmp_kernel_op_21*tmp_kernel_op_21) + (tmp_kernel_op_24*tmp_kernel_op_24));
+       const walberla::float64 elMat_4_5 = tmp_kernel_op_39;
+       const walberla::float64 elMat_5_0 = tmp_kernel_op_29;
+       const walberla::float64 elMat_5_1 = tmp_kernel_op_33;
+       const walberla::float64 elMat_5_2 = tmp_kernel_op_36;
+       const walberla::float64 elMat_5_3 = tmp_kernel_op_38;
+       const walberla::float64 elMat_5_4 = tmp_kernel_op_39;
+       const walberla::float64 elMat_5_5 = tmp_kernel_op_0*((tmp_kernel_op_26*tmp_kernel_op_26) + (tmp_kernel_op_27*tmp_kernel_op_27) + (tmp_kernel_op_28*tmp_kernel_op_28));
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -169,7 +169,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]));
@@ -188,158 +188,158 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::WHITE_UP );
          
-             _data_mat[0] = ((real_t)((basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))*elMat_0_0));
-             _data_mat[1] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)*elMat_0_1));
-             _data_mat[2] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)*elMat_0_2));
-             _data_mat[3] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)*elMat_0_3));
-             _data_mat[4] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)*elMat_0_4));
-             _data_mat[5] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)*elMat_0_5));
-             _data_mat[6] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)*elMat_1_0));
-             _data_mat[7] = ((real_t)((basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))*elMat_1_1));
-             _data_mat[8] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)*elMat_1_2));
-             _data_mat[9] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)*elMat_1_3));
-             _data_mat[10] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)*elMat_1_4));
-             _data_mat[11] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)*elMat_1_5));
-             _data_mat[12] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)*elMat_2_0));
-             _data_mat[13] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)*elMat_2_1));
-             _data_mat[14] = ((real_t)((basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))*elMat_2_2));
-             _data_mat[15] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)*elMat_2_3));
-             _data_mat[16] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)*elMat_2_4));
-             _data_mat[17] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)*elMat_2_5));
-             _data_mat[18] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)*elMat_3_0));
-             _data_mat[19] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)*elMat_3_1));
-             _data_mat[20] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)*elMat_3_2));
-             _data_mat[21] = ((real_t)((basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))*elMat_3_3));
-             _data_mat[22] = ((real_t)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)*elMat_3_4));
-             _data_mat[23] = ((real_t)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)*elMat_3_5));
-             _data_mat[24] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)*elMat_4_0));
-             _data_mat[25] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)*elMat_4_1));
-             _data_mat[26] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)*elMat_4_2));
-             _data_mat[27] = ((real_t)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)*elMat_4_3));
-             _data_mat[28] = ((real_t)((basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))*elMat_4_4));
-             _data_mat[29] = ((real_t)(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)*elMat_4_5));
-             _data_mat[30] = ((real_t)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)*elMat_5_0));
-             _data_mat[31] = ((real_t)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)*elMat_5_1));
-             _data_mat[32] = ((real_t)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)*elMat_5_2));
-             _data_mat[33] = ((real_t)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)*elMat_5_3));
-             _data_mat[34] = ((real_t)(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)*elMat_5_4));
-             _data_mat[35] = ((real_t)((basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))*elMat_5_5));
+             _data_mat[0] = ((walberla::float64)((basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))*elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)*elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)*elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)*elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)*elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)*elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)*elMat_1_0));
+             _data_mat[7] = ((walberla::float64)((basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))*elMat_1_1));
+             _data_mat[8] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)*elMat_1_2));
+             _data_mat[9] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)*elMat_1_3));
+             _data_mat[10] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)*elMat_1_4));
+             _data_mat[11] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)*elMat_1_5));
+             _data_mat[12] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)*elMat_2_0));
+             _data_mat[13] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)*elMat_2_1));
+             _data_mat[14] = ((walberla::float64)((basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))*elMat_2_2));
+             _data_mat[15] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)*elMat_2_3));
+             _data_mat[16] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)*elMat_2_4));
+             _data_mat[17] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)*elMat_2_5));
+             _data_mat[18] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)*elMat_3_0));
+             _data_mat[19] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)*elMat_3_1));
+             _data_mat[20] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)*elMat_3_2));
+             _data_mat[21] = ((walberla::float64)((basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))*elMat_3_3));
+             _data_mat[22] = ((walberla::float64)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)*elMat_3_4));
+             _data_mat[23] = ((walberla::float64)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)*elMat_3_5));
+             _data_mat[24] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)*elMat_4_0));
+             _data_mat[25] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)*elMat_4_1));
+             _data_mat[26] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)*elMat_4_2));
+             _data_mat[27] = ((walberla::float64)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)*elMat_4_3));
+             _data_mat[28] = ((walberla::float64)((basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))*elMat_4_4));
+             _data_mat[29] = ((walberla::float64)(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)*elMat_4_5));
+             _data_mat[30] = ((walberla::float64)(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)*elMat_5_0));
+             _data_mat[31] = ((walberla::float64)(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)*elMat_5_1));
+             _data_mat[32] = ((walberla::float64)(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)*elMat_5_2));
+             _data_mat[33] = ((walberla::float64)(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)*elMat_5_3));
+             _data_mat[34] = ((walberla::float64)(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)*elMat_5_4));
+             _data_mat[35] = ((walberla::float64)((basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))*elMat_5_5));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t Dummy_224 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666666;
-       const real_t Dummy_225 = jac_affine_0_0_WHITE_DOWN*4.0;
-       const real_t Dummy_226 = jac_affine_1_0_WHITE_DOWN*4.0;
-       const real_t Dummy_227 = jac_affine_2_0_WHITE_DOWN*4.0;
-       const real_t Dummy_228 = Dummy_224*(-Dummy_225*jac_affine_0_1_WHITE_DOWN - Dummy_226*jac_affine_1_1_WHITE_DOWN - Dummy_227*jac_affine_2_1_WHITE_DOWN);
-       const real_t Dummy_229 = Dummy_224*(Dummy_225*jac_affine_0_2_WHITE_DOWN + Dummy_226*jac_affine_1_2_WHITE_DOWN + Dummy_227*jac_affine_2_2_WHITE_DOWN);
-       const real_t Dummy_230 = jac_affine_0_0_WHITE_DOWN*2.0;
-       const real_t Dummy_231 = jac_affine_0_1_WHITE_DOWN*2.0;
-       const real_t Dummy_232 = -Dummy_230 + Dummy_231;
-       const real_t Dummy_233 = jac_affine_1_0_WHITE_DOWN*2.0;
-       const real_t Dummy_234 = jac_affine_1_1_WHITE_DOWN*2.0;
-       const real_t Dummy_235 = -Dummy_233 + Dummy_234;
-       const real_t Dummy_236 = jac_affine_2_0_WHITE_DOWN*2.0;
-       const real_t Dummy_237 = jac_affine_2_1_WHITE_DOWN*2.0;
-       const real_t Dummy_238 = -Dummy_236 + Dummy_237;
-       const real_t Dummy_239 = Dummy_224*(Dummy_230*Dummy_232 + Dummy_233*Dummy_235 + Dummy_236*Dummy_238);
-       const real_t Dummy_240 = jac_affine_0_2_WHITE_DOWN*2.0;
-       const real_t Dummy_241 = -Dummy_240;
-       const real_t Dummy_242 = Dummy_230 + Dummy_241;
-       const real_t Dummy_243 = jac_affine_1_2_WHITE_DOWN*2.0;
-       const real_t Dummy_244 = -Dummy_243;
-       const real_t Dummy_245 = Dummy_233 + Dummy_244;
-       const real_t Dummy_246 = jac_affine_2_2_WHITE_DOWN*2.0;
-       const real_t Dummy_247 = -Dummy_246;
-       const real_t Dummy_248 = Dummy_236 + Dummy_247;
-       const real_t Dummy_249 = Dummy_224*(Dummy_230*Dummy_242 + Dummy_233*Dummy_245 + Dummy_236*Dummy_248);
-       const real_t Dummy_250 = -Dummy_231 - Dummy_241;
-       const real_t Dummy_251 = -Dummy_234 - Dummy_244;
-       const real_t Dummy_252 = -Dummy_237 - Dummy_247;
-       const real_t Dummy_253 = Dummy_224*(Dummy_230*Dummy_250 + Dummy_233*Dummy_251 + Dummy_236*Dummy_252);
-       const real_t Dummy_254 = Dummy_224*(jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0);
-       const real_t Dummy_255 = Dummy_224*(-Dummy_231*Dummy_232 - Dummy_234*Dummy_235 - Dummy_237*Dummy_238);
-       const real_t Dummy_256 = Dummy_224*(-Dummy_231*Dummy_242 - Dummy_234*Dummy_245 - Dummy_237*Dummy_248);
-       const real_t Dummy_257 = Dummy_224*(-Dummy_231*Dummy_250 - Dummy_234*Dummy_251 - Dummy_237*Dummy_252);
-       const real_t Dummy_258 = Dummy_224*(Dummy_232*Dummy_240 + Dummy_235*Dummy_243 + Dummy_238*Dummy_246);
-       const real_t Dummy_259 = Dummy_224*(Dummy_240*Dummy_242 + Dummy_243*Dummy_245 + Dummy_246*Dummy_248);
-       const real_t Dummy_260 = Dummy_224*(Dummy_240*Dummy_250 + Dummy_243*Dummy_251 + Dummy_246*Dummy_252);
-       const real_t Dummy_261 = Dummy_224*(Dummy_232*Dummy_242 + Dummy_235*Dummy_245 + Dummy_238*Dummy_248);
-       const real_t Dummy_262 = Dummy_224*(Dummy_232*Dummy_250 + Dummy_235*Dummy_251 + Dummy_238*Dummy_252);
-       const real_t Dummy_263 = Dummy_224*(Dummy_242*Dummy_250 + Dummy_245*Dummy_251 + Dummy_248*Dummy_252);
-       const real_t Dummy_264 = Dummy_224*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
-       const real_t Dummy_265 = Dummy_228;
-       const real_t Dummy_266 = Dummy_229;
-       const real_t Dummy_267 = Dummy_239;
-       const real_t Dummy_268 = Dummy_249;
-       const real_t Dummy_269 = Dummy_253;
-       const real_t Dummy_270 = Dummy_228;
-       const real_t Dummy_271 = Dummy_224*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
-       const real_t Dummy_272 = Dummy_254;
-       const real_t Dummy_273 = Dummy_255;
-       const real_t Dummy_274 = Dummy_256;
-       const real_t Dummy_275 = Dummy_257;
-       const real_t Dummy_276 = Dummy_229;
-       const real_t Dummy_277 = Dummy_254;
-       const real_t Dummy_278 = Dummy_224*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
-       const real_t Dummy_279 = Dummy_258;
-       const real_t Dummy_280 = Dummy_259;
-       const real_t Dummy_281 = Dummy_260;
-       const real_t Dummy_282 = Dummy_239;
-       const real_t Dummy_283 = Dummy_255;
-       const real_t Dummy_284 = Dummy_258;
-       const real_t Dummy_285 = Dummy_224*((Dummy_232*Dummy_232) + (Dummy_235*Dummy_235) + (Dummy_238*Dummy_238));
-       const real_t Dummy_286 = Dummy_261;
-       const real_t Dummy_287 = Dummy_262;
-       const real_t Dummy_288 = Dummy_249;
-       const real_t Dummy_289 = Dummy_256;
-       const real_t Dummy_290 = Dummy_259;
-       const real_t Dummy_291 = Dummy_261;
-       const real_t Dummy_292 = Dummy_224*((Dummy_242*Dummy_242) + (Dummy_245*Dummy_245) + (Dummy_248*Dummy_248));
-       const real_t Dummy_293 = Dummy_263;
-       const real_t Dummy_294 = Dummy_253;
-       const real_t Dummy_295 = Dummy_257;
-       const real_t Dummy_296 = Dummy_260;
-       const real_t Dummy_297 = Dummy_262;
-       const real_t Dummy_298 = Dummy_263;
-       const real_t Dummy_299 = Dummy_224*((Dummy_250*Dummy_250) + (Dummy_251*Dummy_251) + (Dummy_252*Dummy_252));
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 Dummy_222 = 1.0 / (abs_det_jac_affine_WHITE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_223 = jac_affine_0_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_224 = jac_affine_1_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_225 = jac_affine_2_0_WHITE_DOWN*4.0;
+       const walberla::float64 Dummy_226 = Dummy_222*(-Dummy_223*jac_affine_0_1_WHITE_DOWN - Dummy_224*jac_affine_1_1_WHITE_DOWN - Dummy_225*jac_affine_2_1_WHITE_DOWN);
+       const walberla::float64 Dummy_227 = Dummy_222*(Dummy_223*jac_affine_0_2_WHITE_DOWN + Dummy_224*jac_affine_1_2_WHITE_DOWN + Dummy_225*jac_affine_2_2_WHITE_DOWN);
+       const walberla::float64 Dummy_228 = jac_affine_0_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_229 = jac_affine_0_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_230 = -Dummy_228 + Dummy_229;
+       const walberla::float64 Dummy_231 = jac_affine_1_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_232 = jac_affine_1_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_233 = -Dummy_231 + Dummy_232;
+       const walberla::float64 Dummy_234 = jac_affine_2_0_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_235 = jac_affine_2_1_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_236 = -Dummy_234 + Dummy_235;
+       const walberla::float64 Dummy_237 = Dummy_222*(Dummy_228*Dummy_230 + Dummy_231*Dummy_233 + Dummy_234*Dummy_236);
+       const walberla::float64 Dummy_238 = jac_affine_0_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_239 = -Dummy_238;
+       const walberla::float64 Dummy_240 = Dummy_228 + Dummy_239;
+       const walberla::float64 Dummy_241 = jac_affine_1_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_242 = -Dummy_241;
+       const walberla::float64 Dummy_243 = Dummy_231 + Dummy_242;
+       const walberla::float64 Dummy_244 = jac_affine_2_2_WHITE_DOWN*2.0;
+       const walberla::float64 Dummy_245 = -Dummy_244;
+       const walberla::float64 Dummy_246 = Dummy_234 + Dummy_245;
+       const walberla::float64 Dummy_247 = Dummy_222*(Dummy_228*Dummy_240 + Dummy_231*Dummy_243 + Dummy_234*Dummy_246);
+       const walberla::float64 Dummy_248 = -Dummy_229 - Dummy_239;
+       const walberla::float64 Dummy_249 = -Dummy_232 - Dummy_242;
+       const walberla::float64 Dummy_250 = -Dummy_235 - Dummy_245;
+       const walberla::float64 Dummy_251 = Dummy_222*(Dummy_228*Dummy_248 + Dummy_231*Dummy_249 + Dummy_234*Dummy_250);
+       const walberla::float64 Dummy_252 = Dummy_222*(jac_affine_0_1_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN*-4.0 + jac_affine_1_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*-4.0 + jac_affine_2_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN*-4.0);
+       const walberla::float64 Dummy_253 = Dummy_222*(-Dummy_229*Dummy_230 - Dummy_232*Dummy_233 - Dummy_235*Dummy_236);
+       const walberla::float64 Dummy_254 = Dummy_222*(-Dummy_229*Dummy_240 - Dummy_232*Dummy_243 - Dummy_235*Dummy_246);
+       const walberla::float64 Dummy_255 = Dummy_222*(-Dummy_229*Dummy_248 - Dummy_232*Dummy_249 - Dummy_235*Dummy_250);
+       const walberla::float64 Dummy_256 = Dummy_222*(Dummy_230*Dummy_238 + Dummy_233*Dummy_241 + Dummy_236*Dummy_244);
+       const walberla::float64 Dummy_257 = Dummy_222*(Dummy_238*Dummy_240 + Dummy_241*Dummy_243 + Dummy_244*Dummy_246);
+       const walberla::float64 Dummy_258 = Dummy_222*(Dummy_238*Dummy_248 + Dummy_241*Dummy_249 + Dummy_244*Dummy_250);
+       const walberla::float64 Dummy_259 = Dummy_222*(Dummy_230*Dummy_240 + Dummy_233*Dummy_243 + Dummy_236*Dummy_246);
+       const walberla::float64 Dummy_260 = Dummy_222*(Dummy_230*Dummy_248 + Dummy_233*Dummy_249 + Dummy_236*Dummy_250);
+       const walberla::float64 Dummy_261 = Dummy_222*(Dummy_240*Dummy_248 + Dummy_243*Dummy_249 + Dummy_246*Dummy_250);
+       const walberla::float64 Dummy_262 = Dummy_222*((jac_affine_0_0_WHITE_DOWN*jac_affine_0_0_WHITE_DOWN)*4.0 + (jac_affine_1_0_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN)*4.0 + (jac_affine_2_0_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_263 = Dummy_226;
+       const walberla::float64 Dummy_264 = Dummy_227;
+       const walberla::float64 Dummy_265 = Dummy_237;
+       const walberla::float64 Dummy_266 = Dummy_247;
+       const walberla::float64 Dummy_267 = Dummy_251;
+       const walberla::float64 Dummy_268 = Dummy_226;
+       const walberla::float64 Dummy_269 = Dummy_222*((jac_affine_0_1_WHITE_DOWN*jac_affine_0_1_WHITE_DOWN)*4.0 + (jac_affine_1_1_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN)*4.0 + (jac_affine_2_1_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_270 = Dummy_252;
+       const walberla::float64 Dummy_271 = Dummy_253;
+       const walberla::float64 Dummy_272 = Dummy_254;
+       const walberla::float64 Dummy_273 = Dummy_255;
+       const walberla::float64 Dummy_274 = Dummy_227;
+       const walberla::float64 Dummy_275 = Dummy_252;
+       const walberla::float64 Dummy_276 = Dummy_222*((jac_affine_0_2_WHITE_DOWN*jac_affine_0_2_WHITE_DOWN)*4.0 + (jac_affine_1_2_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN)*4.0 + (jac_affine_2_2_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN)*4.0);
+       const walberla::float64 Dummy_277 = Dummy_256;
+       const walberla::float64 Dummy_278 = Dummy_257;
+       const walberla::float64 Dummy_279 = Dummy_258;
+       const walberla::float64 Dummy_280 = Dummy_237;
+       const walberla::float64 Dummy_281 = Dummy_253;
+       const walberla::float64 Dummy_282 = Dummy_256;
+       const walberla::float64 Dummy_283 = Dummy_222*((Dummy_230*Dummy_230) + (Dummy_233*Dummy_233) + (Dummy_236*Dummy_236));
+       const walberla::float64 Dummy_284 = Dummy_259;
+       const walberla::float64 Dummy_285 = Dummy_260;
+       const walberla::float64 Dummy_286 = Dummy_247;
+       const walberla::float64 Dummy_287 = Dummy_254;
+       const walberla::float64 Dummy_288 = Dummy_257;
+       const walberla::float64 Dummy_289 = Dummy_259;
+       const walberla::float64 Dummy_290 = Dummy_222*((Dummy_240*Dummy_240) + (Dummy_243*Dummy_243) + (Dummy_246*Dummy_246));
+       const walberla::float64 Dummy_291 = Dummy_261;
+       const walberla::float64 Dummy_292 = Dummy_251;
+       const walberla::float64 Dummy_293 = Dummy_255;
+       const walberla::float64 Dummy_294 = Dummy_258;
+       const walberla::float64 Dummy_295 = Dummy_260;
+       const walberla::float64 Dummy_296 = Dummy_261;
+       const walberla::float64 Dummy_297 = Dummy_222*((Dummy_248*Dummy_248) + (Dummy_249*Dummy_249) + (Dummy_250*Dummy_250));
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -349,7 +349,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1]));
@@ -368,152 +368,152 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::WHITE_DOWN );
          
-             _data_mat[0] = ((real_t)(Dummy_264*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
-             _data_mat[1] = ((real_t)(Dummy_265*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[2] = ((real_t)(Dummy_266*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[3] = ((real_t)(Dummy_267*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[4] = ((real_t)(Dummy_268*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[5] = ((real_t)(Dummy_269*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[6] = ((real_t)(Dummy_270*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[7] = ((real_t)(Dummy_271*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
-             _data_mat[8] = ((real_t)(Dummy_272*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[9] = ((real_t)(Dummy_273*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[10] = ((real_t)(Dummy_274*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[11] = ((real_t)(Dummy_275*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[12] = ((real_t)(Dummy_276*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[13] = ((real_t)(Dummy_277*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[14] = ((real_t)(Dummy_278*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
-             _data_mat[15] = ((real_t)(Dummy_279*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[16] = ((real_t)(Dummy_280*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[17] = ((real_t)(Dummy_281*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[18] = ((real_t)(Dummy_282*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[19] = ((real_t)(Dummy_283*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[20] = ((real_t)(Dummy_284*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[21] = ((real_t)(Dummy_285*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
-             _data_mat[22] = ((real_t)(Dummy_286*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[23] = ((real_t)(Dummy_287*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[24] = ((real_t)(Dummy_288*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[25] = ((real_t)(Dummy_289*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[26] = ((real_t)(Dummy_290*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[27] = ((real_t)(Dummy_291*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[28] = ((real_t)(Dummy_292*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
-             _data_mat[29] = ((real_t)(Dummy_293*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[30] = ((real_t)(Dummy_294*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[31] = ((real_t)(Dummy_295*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[32] = ((real_t)(Dummy_296*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[33] = ((real_t)(Dummy_297*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[34] = ((real_t)(Dummy_298*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[35] = ((real_t)(Dummy_299*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
+             _data_mat[0] = ((walberla::float64)(Dummy_262*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
+             _data_mat[1] = ((walberla::float64)(Dummy_263*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[2] = ((walberla::float64)(Dummy_264*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[3] = ((walberla::float64)(Dummy_265*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[4] = ((walberla::float64)(Dummy_266*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[5] = ((walberla::float64)(Dummy_267*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[6] = ((walberla::float64)(Dummy_268*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[7] = ((walberla::float64)(Dummy_269*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
+             _data_mat[8] = ((walberla::float64)(Dummy_270*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[9] = ((walberla::float64)(Dummy_271*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[10] = ((walberla::float64)(Dummy_272*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[11] = ((walberla::float64)(Dummy_273*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[12] = ((walberla::float64)(Dummy_274*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[13] = ((walberla::float64)(Dummy_275*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[14] = ((walberla::float64)(Dummy_276*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
+             _data_mat[15] = ((walberla::float64)(Dummy_277*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[16] = ((walberla::float64)(Dummy_278*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[17] = ((walberla::float64)(Dummy_279*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[18] = ((walberla::float64)(Dummy_280*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[19] = ((walberla::float64)(Dummy_281*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[20] = ((walberla::float64)(Dummy_282*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[21] = ((walberla::float64)(Dummy_283*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
+             _data_mat[22] = ((walberla::float64)(Dummy_284*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[23] = ((walberla::float64)(Dummy_285*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[24] = ((walberla::float64)(Dummy_286*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[25] = ((walberla::float64)(Dummy_287*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[26] = ((walberla::float64)(Dummy_288*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[27] = ((walberla::float64)(Dummy_289*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[28] = ((walberla::float64)(Dummy_290*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
+             _data_mat[29] = ((walberla::float64)(Dummy_291*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[30] = ((walberla::float64)(Dummy_292*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[31] = ((walberla::float64)(Dummy_293*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[32] = ((walberla::float64)(Dummy_294*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[33] = ((walberla::float64)(Dummy_295*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[34] = ((walberla::float64)(Dummy_296*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[35] = ((walberla::float64)(Dummy_297*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t Dummy_300 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666666;
-       const real_t Dummy_301 = jac_affine_0_0_BLUE_UP*4.0;
-       const real_t Dummy_302 = jac_affine_1_0_BLUE_UP*4.0;
-       const real_t Dummy_303 = jac_affine_2_0_BLUE_UP*4.0;
-       const real_t Dummy_304 = Dummy_300*(-Dummy_301*jac_affine_0_1_BLUE_UP - Dummy_302*jac_affine_1_1_BLUE_UP - Dummy_303*jac_affine_2_1_BLUE_UP);
-       const real_t Dummy_305 = Dummy_300*(Dummy_301*jac_affine_0_2_BLUE_UP + Dummy_302*jac_affine_1_2_BLUE_UP + Dummy_303*jac_affine_2_2_BLUE_UP);
-       const real_t Dummy_306 = jac_affine_0_0_BLUE_UP*2.0;
-       const real_t Dummy_307 = jac_affine_0_1_BLUE_UP*2.0;
-       const real_t Dummy_308 = -Dummy_306 + Dummy_307;
-       const real_t Dummy_309 = jac_affine_1_0_BLUE_UP*2.0;
-       const real_t Dummy_310 = jac_affine_1_1_BLUE_UP*2.0;
-       const real_t Dummy_311 = -Dummy_309 + Dummy_310;
-       const real_t Dummy_312 = jac_affine_2_0_BLUE_UP*2.0;
-       const real_t Dummy_313 = jac_affine_2_1_BLUE_UP*2.0;
-       const real_t Dummy_314 = -Dummy_312 + Dummy_313;
-       const real_t Dummy_315 = Dummy_300*(Dummy_306*Dummy_308 + Dummy_309*Dummy_311 + Dummy_312*Dummy_314);
-       const real_t Dummy_316 = jac_affine_0_2_BLUE_UP*2.0;
-       const real_t Dummy_317 = -Dummy_316;
-       const real_t Dummy_318 = Dummy_306 + Dummy_317;
-       const real_t Dummy_319 = jac_affine_1_2_BLUE_UP*2.0;
-       const real_t Dummy_320 = -Dummy_319;
-       const real_t Dummy_321 = Dummy_309 + Dummy_320;
-       const real_t Dummy_322 = jac_affine_2_2_BLUE_UP*2.0;
-       const real_t Dummy_323 = -Dummy_322;
-       const real_t Dummy_324 = Dummy_312 + Dummy_323;
-       const real_t Dummy_325 = Dummy_300*(Dummy_306*Dummy_318 + Dummy_309*Dummy_321 + Dummy_312*Dummy_324);
-       const real_t Dummy_326 = -Dummy_307 - Dummy_317;
-       const real_t Dummy_327 = -Dummy_310 - Dummy_320;
-       const real_t Dummy_328 = -Dummy_313 - Dummy_323;
-       const real_t Dummy_329 = Dummy_300*(Dummy_306*Dummy_326 + Dummy_309*Dummy_327 + Dummy_312*Dummy_328);
-       const real_t Dummy_330 = Dummy_300*(jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0);
-       const real_t Dummy_331 = Dummy_300*(-Dummy_307*Dummy_308 - Dummy_310*Dummy_311 - Dummy_313*Dummy_314);
-       const real_t Dummy_332 = Dummy_300*(-Dummy_307*Dummy_318 - Dummy_310*Dummy_321 - Dummy_313*Dummy_324);
-       const real_t Dummy_333 = Dummy_300*(-Dummy_307*Dummy_326 - Dummy_310*Dummy_327 - Dummy_313*Dummy_328);
-       const real_t Dummy_334 = Dummy_300*(Dummy_308*Dummy_316 + Dummy_311*Dummy_319 + Dummy_314*Dummy_322);
-       const real_t Dummy_335 = Dummy_300*(Dummy_316*Dummy_318 + Dummy_319*Dummy_321 + Dummy_322*Dummy_324);
-       const real_t Dummy_336 = Dummy_300*(Dummy_316*Dummy_326 + Dummy_319*Dummy_327 + Dummy_322*Dummy_328);
-       const real_t Dummy_337 = Dummy_300*(Dummy_308*Dummy_318 + Dummy_311*Dummy_321 + Dummy_314*Dummy_324);
-       const real_t Dummy_338 = Dummy_300*(Dummy_308*Dummy_326 + Dummy_311*Dummy_327 + Dummy_314*Dummy_328);
-       const real_t Dummy_339 = Dummy_300*(Dummy_318*Dummy_326 + Dummy_321*Dummy_327 + Dummy_324*Dummy_328);
-       const real_t Dummy_340 = Dummy_300*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
-       const real_t Dummy_341 = Dummy_304;
-       const real_t Dummy_342 = Dummy_305;
-       const real_t Dummy_343 = Dummy_315;
-       const real_t Dummy_344 = Dummy_325;
-       const real_t Dummy_345 = Dummy_329;
-       const real_t Dummy_346 = Dummy_304;
-       const real_t Dummy_347 = Dummy_300*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
-       const real_t Dummy_348 = Dummy_330;
-       const real_t Dummy_349 = Dummy_331;
-       const real_t Dummy_350 = Dummy_332;
-       const real_t Dummy_351 = Dummy_333;
-       const real_t Dummy_352 = Dummy_305;
-       const real_t Dummy_353 = Dummy_330;
-       const real_t Dummy_354 = Dummy_300*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
-       const real_t Dummy_355 = Dummy_334;
-       const real_t Dummy_356 = Dummy_335;
-       const real_t Dummy_357 = Dummy_336;
-       const real_t Dummy_358 = Dummy_315;
-       const real_t Dummy_359 = Dummy_331;
-       const real_t Dummy_360 = Dummy_334;
-       const real_t Dummy_361 = Dummy_300*((Dummy_308*Dummy_308) + (Dummy_311*Dummy_311) + (Dummy_314*Dummy_314));
-       const real_t Dummy_362 = Dummy_337;
-       const real_t Dummy_363 = Dummy_338;
-       const real_t Dummy_364 = Dummy_325;
-       const real_t Dummy_365 = Dummy_332;
-       const real_t Dummy_366 = Dummy_335;
-       const real_t Dummy_367 = Dummy_337;
-       const real_t Dummy_368 = Dummy_300*((Dummy_318*Dummy_318) + (Dummy_321*Dummy_321) + (Dummy_324*Dummy_324));
-       const real_t Dummy_369 = Dummy_339;
-       const real_t Dummy_370 = Dummy_329;
-       const real_t Dummy_371 = Dummy_333;
-       const real_t Dummy_372 = Dummy_336;
-       const real_t Dummy_373 = Dummy_338;
-       const real_t Dummy_374 = Dummy_339;
-       const real_t Dummy_375 = Dummy_300*((Dummy_326*Dummy_326) + (Dummy_327*Dummy_327) + (Dummy_328*Dummy_328));
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 Dummy_298 = 1.0 / (abs_det_jac_affine_BLUE_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_299 = jac_affine_0_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_300 = jac_affine_1_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_301 = jac_affine_2_0_BLUE_UP*4.0;
+       const walberla::float64 Dummy_302 = Dummy_298*(-Dummy_299*jac_affine_0_1_BLUE_UP - Dummy_300*jac_affine_1_1_BLUE_UP - Dummy_301*jac_affine_2_1_BLUE_UP);
+       const walberla::float64 Dummy_303 = Dummy_298*(Dummy_299*jac_affine_0_2_BLUE_UP + Dummy_300*jac_affine_1_2_BLUE_UP + Dummy_301*jac_affine_2_2_BLUE_UP);
+       const walberla::float64 Dummy_304 = jac_affine_0_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_305 = jac_affine_0_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_306 = -Dummy_304 + Dummy_305;
+       const walberla::float64 Dummy_307 = jac_affine_1_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_308 = jac_affine_1_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_309 = -Dummy_307 + Dummy_308;
+       const walberla::float64 Dummy_310 = jac_affine_2_0_BLUE_UP*2.0;
+       const walberla::float64 Dummy_311 = jac_affine_2_1_BLUE_UP*2.0;
+       const walberla::float64 Dummy_312 = -Dummy_310 + Dummy_311;
+       const walberla::float64 Dummy_313 = Dummy_298*(Dummy_304*Dummy_306 + Dummy_307*Dummy_309 + Dummy_310*Dummy_312);
+       const walberla::float64 Dummy_314 = jac_affine_0_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_315 = -Dummy_314;
+       const walberla::float64 Dummy_316 = Dummy_304 + Dummy_315;
+       const walberla::float64 Dummy_317 = jac_affine_1_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_318 = -Dummy_317;
+       const walberla::float64 Dummy_319 = Dummy_307 + Dummy_318;
+       const walberla::float64 Dummy_320 = jac_affine_2_2_BLUE_UP*2.0;
+       const walberla::float64 Dummy_321 = -Dummy_320;
+       const walberla::float64 Dummy_322 = Dummy_310 + Dummy_321;
+       const walberla::float64 Dummy_323 = Dummy_298*(Dummy_304*Dummy_316 + Dummy_307*Dummy_319 + Dummy_310*Dummy_322);
+       const walberla::float64 Dummy_324 = -Dummy_305 - Dummy_315;
+       const walberla::float64 Dummy_325 = -Dummy_308 - Dummy_318;
+       const walberla::float64 Dummy_326 = -Dummy_311 - Dummy_321;
+       const walberla::float64 Dummy_327 = Dummy_298*(Dummy_304*Dummy_324 + Dummy_307*Dummy_325 + Dummy_310*Dummy_326);
+       const walberla::float64 Dummy_328 = Dummy_298*(jac_affine_0_1_BLUE_UP*jac_affine_0_2_BLUE_UP*-4.0 + jac_affine_1_1_BLUE_UP*jac_affine_1_2_BLUE_UP*-4.0 + jac_affine_2_1_BLUE_UP*jac_affine_2_2_BLUE_UP*-4.0);
+       const walberla::float64 Dummy_329 = Dummy_298*(-Dummy_305*Dummy_306 - Dummy_308*Dummy_309 - Dummy_311*Dummy_312);
+       const walberla::float64 Dummy_330 = Dummy_298*(-Dummy_305*Dummy_316 - Dummy_308*Dummy_319 - Dummy_311*Dummy_322);
+       const walberla::float64 Dummy_331 = Dummy_298*(-Dummy_305*Dummy_324 - Dummy_308*Dummy_325 - Dummy_311*Dummy_326);
+       const walberla::float64 Dummy_332 = Dummy_298*(Dummy_306*Dummy_314 + Dummy_309*Dummy_317 + Dummy_312*Dummy_320);
+       const walberla::float64 Dummy_333 = Dummy_298*(Dummy_314*Dummy_316 + Dummy_317*Dummy_319 + Dummy_320*Dummy_322);
+       const walberla::float64 Dummy_334 = Dummy_298*(Dummy_314*Dummy_324 + Dummy_317*Dummy_325 + Dummy_320*Dummy_326);
+       const walberla::float64 Dummy_335 = Dummy_298*(Dummy_306*Dummy_316 + Dummy_309*Dummy_319 + Dummy_312*Dummy_322);
+       const walberla::float64 Dummy_336 = Dummy_298*(Dummy_306*Dummy_324 + Dummy_309*Dummy_325 + Dummy_312*Dummy_326);
+       const walberla::float64 Dummy_337 = Dummy_298*(Dummy_316*Dummy_324 + Dummy_319*Dummy_325 + Dummy_322*Dummy_326);
+       const walberla::float64 Dummy_338 = Dummy_298*((jac_affine_0_0_BLUE_UP*jac_affine_0_0_BLUE_UP)*4.0 + (jac_affine_1_0_BLUE_UP*jac_affine_1_0_BLUE_UP)*4.0 + (jac_affine_2_0_BLUE_UP*jac_affine_2_0_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_339 = Dummy_302;
+       const walberla::float64 Dummy_340 = Dummy_303;
+       const walberla::float64 Dummy_341 = Dummy_313;
+       const walberla::float64 Dummy_342 = Dummy_323;
+       const walberla::float64 Dummy_343 = Dummy_327;
+       const walberla::float64 Dummy_344 = Dummy_302;
+       const walberla::float64 Dummy_345 = Dummy_298*((jac_affine_0_1_BLUE_UP*jac_affine_0_1_BLUE_UP)*4.0 + (jac_affine_1_1_BLUE_UP*jac_affine_1_1_BLUE_UP)*4.0 + (jac_affine_2_1_BLUE_UP*jac_affine_2_1_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_346 = Dummy_328;
+       const walberla::float64 Dummy_347 = Dummy_329;
+       const walberla::float64 Dummy_348 = Dummy_330;
+       const walberla::float64 Dummy_349 = Dummy_331;
+       const walberla::float64 Dummy_350 = Dummy_303;
+       const walberla::float64 Dummy_351 = Dummy_328;
+       const walberla::float64 Dummy_352 = Dummy_298*((jac_affine_0_2_BLUE_UP*jac_affine_0_2_BLUE_UP)*4.0 + (jac_affine_1_2_BLUE_UP*jac_affine_1_2_BLUE_UP)*4.0 + (jac_affine_2_2_BLUE_UP*jac_affine_2_2_BLUE_UP)*4.0);
+       const walberla::float64 Dummy_353 = Dummy_332;
+       const walberla::float64 Dummy_354 = Dummy_333;
+       const walberla::float64 Dummy_355 = Dummy_334;
+       const walberla::float64 Dummy_356 = Dummy_313;
+       const walberla::float64 Dummy_357 = Dummy_329;
+       const walberla::float64 Dummy_358 = Dummy_332;
+       const walberla::float64 Dummy_359 = Dummy_298*((Dummy_306*Dummy_306) + (Dummy_309*Dummy_309) + (Dummy_312*Dummy_312));
+       const walberla::float64 Dummy_360 = Dummy_335;
+       const walberla::float64 Dummy_361 = Dummy_336;
+       const walberla::float64 Dummy_362 = Dummy_323;
+       const walberla::float64 Dummy_363 = Dummy_330;
+       const walberla::float64 Dummy_364 = Dummy_333;
+       const walberla::float64 Dummy_365 = Dummy_335;
+       const walberla::float64 Dummy_366 = Dummy_298*((Dummy_316*Dummy_316) + (Dummy_319*Dummy_319) + (Dummy_322*Dummy_322));
+       const walberla::float64 Dummy_367 = Dummy_337;
+       const walberla::float64 Dummy_368 = Dummy_327;
+       const walberla::float64 Dummy_369 = Dummy_331;
+       const walberla::float64 Dummy_370 = Dummy_334;
+       const walberla::float64 Dummy_371 = Dummy_336;
+       const walberla::float64 Dummy_372 = Dummy_337;
+       const walberla::float64 Dummy_373 = Dummy_298*((Dummy_324*Dummy_324) + (Dummy_325*Dummy_325) + (Dummy_326*Dummy_326));
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -523,7 +523,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
@@ -542,155 +542,155 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::BLUE_UP );
          
-             _data_mat[0] = ((real_t)(Dummy_340*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
-             _data_mat[1] = ((real_t)(Dummy_341*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[2] = ((real_t)(Dummy_342*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[3] = ((real_t)(Dummy_343*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[4] = ((real_t)(Dummy_344*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[5] = ((real_t)(Dummy_345*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[6] = ((real_t)(Dummy_346*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[7] = ((real_t)(Dummy_347*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
-             _data_mat[8] = ((real_t)(Dummy_348*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[9] = ((real_t)(Dummy_349*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[10] = ((real_t)(Dummy_350*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[11] = ((real_t)(Dummy_351*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[12] = ((real_t)(Dummy_352*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[13] = ((real_t)(Dummy_353*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[14] = ((real_t)(Dummy_354*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
-             _data_mat[15] = ((real_t)(Dummy_355*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[16] = ((real_t)(Dummy_356*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[17] = ((real_t)(Dummy_357*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[18] = ((real_t)(Dummy_358*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[19] = ((real_t)(Dummy_359*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[20] = ((real_t)(Dummy_360*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[21] = ((real_t)(Dummy_361*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
-             _data_mat[22] = ((real_t)(Dummy_362*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[23] = ((real_t)(Dummy_363*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[24] = ((real_t)(Dummy_364*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[25] = ((real_t)(Dummy_365*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[26] = ((real_t)(Dummy_366*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[27] = ((real_t)(Dummy_367*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[28] = ((real_t)(Dummy_368*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
-             _data_mat[29] = ((real_t)(Dummy_369*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[30] = ((real_t)(Dummy_370*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[31] = ((real_t)(Dummy_371*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[32] = ((real_t)(Dummy_372*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[33] = ((real_t)(Dummy_373*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[34] = ((real_t)(Dummy_374*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[35] = ((real_t)(Dummy_375*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
+             _data_mat[0] = ((walberla::float64)(Dummy_338*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
+             _data_mat[1] = ((walberla::float64)(Dummy_339*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[2] = ((walberla::float64)(Dummy_340*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[3] = ((walberla::float64)(Dummy_341*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[4] = ((walberla::float64)(Dummy_342*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[5] = ((walberla::float64)(Dummy_343*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[6] = ((walberla::float64)(Dummy_344*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[7] = ((walberla::float64)(Dummy_345*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
+             _data_mat[8] = ((walberla::float64)(Dummy_346*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[9] = ((walberla::float64)(Dummy_347*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[10] = ((walberla::float64)(Dummy_348*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[11] = ((walberla::float64)(Dummy_349*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[12] = ((walberla::float64)(Dummy_350*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[13] = ((walberla::float64)(Dummy_351*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[14] = ((walberla::float64)(Dummy_352*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
+             _data_mat[15] = ((walberla::float64)(Dummy_353*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[16] = ((walberla::float64)(Dummy_354*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[17] = ((walberla::float64)(Dummy_355*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[18] = ((walberla::float64)(Dummy_356*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[19] = ((walberla::float64)(Dummy_357*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[20] = ((walberla::float64)(Dummy_358*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[21] = ((walberla::float64)(Dummy_359*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
+             _data_mat[22] = ((walberla::float64)(Dummy_360*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[23] = ((walberla::float64)(Dummy_361*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[24] = ((walberla::float64)(Dummy_362*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[25] = ((walberla::float64)(Dummy_363*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[26] = ((walberla::float64)(Dummy_364*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[27] = ((walberla::float64)(Dummy_365*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[28] = ((walberla::float64)(Dummy_366*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
+             _data_mat[29] = ((walberla::float64)(Dummy_367*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[30] = ((walberla::float64)(Dummy_368*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[31] = ((walberla::float64)(Dummy_369*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[32] = ((walberla::float64)(Dummy_370*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[33] = ((walberla::float64)(Dummy_371*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[34] = ((walberla::float64)(Dummy_372*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[35] = ((walberla::float64)(Dummy_373*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t Dummy_376 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666666;
-       const real_t Dummy_377 = jac_affine_0_0_BLUE_DOWN*4.0;
-       const real_t Dummy_378 = jac_affine_1_0_BLUE_DOWN*4.0;
-       const real_t Dummy_379 = jac_affine_2_0_BLUE_DOWN*4.0;
-       const real_t Dummy_380 = Dummy_376*(-Dummy_377*jac_affine_0_1_BLUE_DOWN - Dummy_378*jac_affine_1_1_BLUE_DOWN - Dummy_379*jac_affine_2_1_BLUE_DOWN);
-       const real_t Dummy_381 = Dummy_376*(Dummy_377*jac_affine_0_2_BLUE_DOWN + Dummy_378*jac_affine_1_2_BLUE_DOWN + Dummy_379*jac_affine_2_2_BLUE_DOWN);
-       const real_t Dummy_382 = jac_affine_0_0_BLUE_DOWN*2.0;
-       const real_t Dummy_383 = jac_affine_0_1_BLUE_DOWN*2.0;
-       const real_t Dummy_384 = -Dummy_382 + Dummy_383;
-       const real_t Dummy_385 = jac_affine_1_0_BLUE_DOWN*2.0;
-       const real_t Dummy_386 = jac_affine_1_1_BLUE_DOWN*2.0;
-       const real_t Dummy_387 = -Dummy_385 + Dummy_386;
-       const real_t Dummy_388 = jac_affine_2_0_BLUE_DOWN*2.0;
-       const real_t Dummy_389 = jac_affine_2_1_BLUE_DOWN*2.0;
-       const real_t Dummy_390 = -Dummy_388 + Dummy_389;
-       const real_t Dummy_391 = Dummy_376*(Dummy_382*Dummy_384 + Dummy_385*Dummy_387 + Dummy_388*Dummy_390);
-       const real_t Dummy_392 = jac_affine_0_2_BLUE_DOWN*2.0;
-       const real_t Dummy_393 = -Dummy_392;
-       const real_t Dummy_394 = Dummy_382 + Dummy_393;
-       const real_t Dummy_395 = jac_affine_1_2_BLUE_DOWN*2.0;
-       const real_t Dummy_396 = -Dummy_395;
-       const real_t Dummy_397 = Dummy_385 + Dummy_396;
-       const real_t Dummy_398 = jac_affine_2_2_BLUE_DOWN*2.0;
-       const real_t Dummy_399 = -Dummy_398;
-       const real_t Dummy_400 = Dummy_388 + Dummy_399;
-       const real_t Dummy_401 = Dummy_376*(Dummy_382*Dummy_394 + Dummy_385*Dummy_397 + Dummy_388*Dummy_400);
-       const real_t Dummy_402 = -Dummy_383 - Dummy_393;
-       const real_t Dummy_403 = -Dummy_386 - Dummy_396;
-       const real_t Dummy_404 = -Dummy_389 - Dummy_399;
-       const real_t Dummy_405 = Dummy_376*(Dummy_382*Dummy_402 + Dummy_385*Dummy_403 + Dummy_388*Dummy_404);
-       const real_t Dummy_406 = Dummy_376*(jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0);
-       const real_t Dummy_407 = Dummy_376*(-Dummy_383*Dummy_384 - Dummy_386*Dummy_387 - Dummy_389*Dummy_390);
-       const real_t Dummy_408 = Dummy_376*(-Dummy_383*Dummy_394 - Dummy_386*Dummy_397 - Dummy_389*Dummy_400);
-       const real_t Dummy_409 = Dummy_376*(-Dummy_383*Dummy_402 - Dummy_386*Dummy_403 - Dummy_389*Dummy_404);
-       const real_t Dummy_410 = Dummy_376*(Dummy_384*Dummy_392 + Dummy_387*Dummy_395 + Dummy_390*Dummy_398);
-       const real_t Dummy_411 = Dummy_376*(Dummy_392*Dummy_394 + Dummy_395*Dummy_397 + Dummy_398*Dummy_400);
-       const real_t Dummy_412 = Dummy_376*(Dummy_392*Dummy_402 + Dummy_395*Dummy_403 + Dummy_398*Dummy_404);
-       const real_t Dummy_413 = Dummy_376*(Dummy_384*Dummy_394 + Dummy_387*Dummy_397 + Dummy_390*Dummy_400);
-       const real_t Dummy_414 = Dummy_376*(Dummy_384*Dummy_402 + Dummy_387*Dummy_403 + Dummy_390*Dummy_404);
-       const real_t Dummy_415 = Dummy_376*(Dummy_394*Dummy_402 + Dummy_397*Dummy_403 + Dummy_400*Dummy_404);
-       const real_t Dummy_416 = Dummy_376*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
-       const real_t Dummy_417 = Dummy_380;
-       const real_t Dummy_418 = Dummy_381;
-       const real_t Dummy_419 = Dummy_391;
-       const real_t Dummy_420 = Dummy_401;
-       const real_t Dummy_421 = Dummy_405;
-       const real_t Dummy_422 = Dummy_380;
-       const real_t Dummy_423 = Dummy_376*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
-       const real_t Dummy_424 = Dummy_406;
-       const real_t Dummy_425 = Dummy_407;
-       const real_t Dummy_426 = Dummy_408;
-       const real_t Dummy_427 = Dummy_409;
-       const real_t Dummy_428 = Dummy_381;
-       const real_t Dummy_429 = Dummy_406;
-       const real_t Dummy_430 = Dummy_376*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
-       const real_t Dummy_431 = Dummy_410;
-       const real_t Dummy_432 = Dummy_411;
-       const real_t Dummy_433 = Dummy_412;
-       const real_t Dummy_434 = Dummy_391;
-       const real_t Dummy_435 = Dummy_407;
-       const real_t Dummy_436 = Dummy_410;
-       const real_t Dummy_437 = Dummy_376*((Dummy_384*Dummy_384) + (Dummy_387*Dummy_387) + (Dummy_390*Dummy_390));
-       const real_t Dummy_438 = Dummy_413;
-       const real_t Dummy_439 = Dummy_414;
-       const real_t Dummy_440 = Dummy_401;
-       const real_t Dummy_441 = Dummy_408;
-       const real_t Dummy_442 = Dummy_411;
-       const real_t Dummy_443 = Dummy_413;
-       const real_t Dummy_444 = Dummy_376*((Dummy_394*Dummy_394) + (Dummy_397*Dummy_397) + (Dummy_400*Dummy_400));
-       const real_t Dummy_445 = Dummy_415;
-       const real_t Dummy_446 = Dummy_405;
-       const real_t Dummy_447 = Dummy_409;
-       const real_t Dummy_448 = Dummy_412;
-       const real_t Dummy_449 = Dummy_414;
-       const real_t Dummy_450 = Dummy_415;
-       const real_t Dummy_451 = Dummy_376*((Dummy_402*Dummy_402) + (Dummy_403*Dummy_403) + (Dummy_404*Dummy_404));
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 Dummy_374 = 1.0 / (abs_det_jac_affine_BLUE_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_375 = jac_affine_0_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_376 = jac_affine_1_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_377 = jac_affine_2_0_BLUE_DOWN*4.0;
+       const walberla::float64 Dummy_378 = Dummy_374*(-Dummy_375*jac_affine_0_1_BLUE_DOWN - Dummy_376*jac_affine_1_1_BLUE_DOWN - Dummy_377*jac_affine_2_1_BLUE_DOWN);
+       const walberla::float64 Dummy_379 = Dummy_374*(Dummy_375*jac_affine_0_2_BLUE_DOWN + Dummy_376*jac_affine_1_2_BLUE_DOWN + Dummy_377*jac_affine_2_2_BLUE_DOWN);
+       const walberla::float64 Dummy_380 = jac_affine_0_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_381 = jac_affine_0_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_382 = -Dummy_380 + Dummy_381;
+       const walberla::float64 Dummy_383 = jac_affine_1_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_384 = jac_affine_1_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_385 = -Dummy_383 + Dummy_384;
+       const walberla::float64 Dummy_386 = jac_affine_2_0_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_387 = jac_affine_2_1_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_388 = -Dummy_386 + Dummy_387;
+       const walberla::float64 Dummy_389 = Dummy_374*(Dummy_380*Dummy_382 + Dummy_383*Dummy_385 + Dummy_386*Dummy_388);
+       const walberla::float64 Dummy_390 = jac_affine_0_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_391 = -Dummy_390;
+       const walberla::float64 Dummy_392 = Dummy_380 + Dummy_391;
+       const walberla::float64 Dummy_393 = jac_affine_1_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_394 = -Dummy_393;
+       const walberla::float64 Dummy_395 = Dummy_383 + Dummy_394;
+       const walberla::float64 Dummy_396 = jac_affine_2_2_BLUE_DOWN*2.0;
+       const walberla::float64 Dummy_397 = -Dummy_396;
+       const walberla::float64 Dummy_398 = Dummy_386 + Dummy_397;
+       const walberla::float64 Dummy_399 = Dummy_374*(Dummy_380*Dummy_392 + Dummy_383*Dummy_395 + Dummy_386*Dummy_398);
+       const walberla::float64 Dummy_400 = -Dummy_381 - Dummy_391;
+       const walberla::float64 Dummy_401 = -Dummy_384 - Dummy_394;
+       const walberla::float64 Dummy_402 = -Dummy_387 - Dummy_397;
+       const walberla::float64 Dummy_403 = Dummy_374*(Dummy_380*Dummy_400 + Dummy_383*Dummy_401 + Dummy_386*Dummy_402);
+       const walberla::float64 Dummy_404 = Dummy_374*(jac_affine_0_1_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN*-4.0 + jac_affine_1_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*-4.0 + jac_affine_2_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN*-4.0);
+       const walberla::float64 Dummy_405 = Dummy_374*(-Dummy_381*Dummy_382 - Dummy_384*Dummy_385 - Dummy_387*Dummy_388);
+       const walberla::float64 Dummy_406 = Dummy_374*(-Dummy_381*Dummy_392 - Dummy_384*Dummy_395 - Dummy_387*Dummy_398);
+       const walberla::float64 Dummy_407 = Dummy_374*(-Dummy_381*Dummy_400 - Dummy_384*Dummy_401 - Dummy_387*Dummy_402);
+       const walberla::float64 Dummy_408 = Dummy_374*(Dummy_382*Dummy_390 + Dummy_385*Dummy_393 + Dummy_388*Dummy_396);
+       const walberla::float64 Dummy_409 = Dummy_374*(Dummy_390*Dummy_392 + Dummy_393*Dummy_395 + Dummy_396*Dummy_398);
+       const walberla::float64 Dummy_410 = Dummy_374*(Dummy_390*Dummy_400 + Dummy_393*Dummy_401 + Dummy_396*Dummy_402);
+       const walberla::float64 Dummy_411 = Dummy_374*(Dummy_382*Dummy_392 + Dummy_385*Dummy_395 + Dummy_388*Dummy_398);
+       const walberla::float64 Dummy_412 = Dummy_374*(Dummy_382*Dummy_400 + Dummy_385*Dummy_401 + Dummy_388*Dummy_402);
+       const walberla::float64 Dummy_413 = Dummy_374*(Dummy_392*Dummy_400 + Dummy_395*Dummy_401 + Dummy_398*Dummy_402);
+       const walberla::float64 Dummy_414 = Dummy_374*((jac_affine_0_0_BLUE_DOWN*jac_affine_0_0_BLUE_DOWN)*4.0 + (jac_affine_1_0_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN)*4.0 + (jac_affine_2_0_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_415 = Dummy_378;
+       const walberla::float64 Dummy_416 = Dummy_379;
+       const walberla::float64 Dummy_417 = Dummy_389;
+       const walberla::float64 Dummy_418 = Dummy_399;
+       const walberla::float64 Dummy_419 = Dummy_403;
+       const walberla::float64 Dummy_420 = Dummy_378;
+       const walberla::float64 Dummy_421 = Dummy_374*((jac_affine_0_1_BLUE_DOWN*jac_affine_0_1_BLUE_DOWN)*4.0 + (jac_affine_1_1_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN)*4.0 + (jac_affine_2_1_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_422 = Dummy_404;
+       const walberla::float64 Dummy_423 = Dummy_405;
+       const walberla::float64 Dummy_424 = Dummy_406;
+       const walberla::float64 Dummy_425 = Dummy_407;
+       const walberla::float64 Dummy_426 = Dummy_379;
+       const walberla::float64 Dummy_427 = Dummy_404;
+       const walberla::float64 Dummy_428 = Dummy_374*((jac_affine_0_2_BLUE_DOWN*jac_affine_0_2_BLUE_DOWN)*4.0 + (jac_affine_1_2_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN)*4.0 + (jac_affine_2_2_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN)*4.0);
+       const walberla::float64 Dummy_429 = Dummy_408;
+       const walberla::float64 Dummy_430 = Dummy_409;
+       const walberla::float64 Dummy_431 = Dummy_410;
+       const walberla::float64 Dummy_432 = Dummy_389;
+       const walberla::float64 Dummy_433 = Dummy_405;
+       const walberla::float64 Dummy_434 = Dummy_408;
+       const walberla::float64 Dummy_435 = Dummy_374*((Dummy_382*Dummy_382) + (Dummy_385*Dummy_385) + (Dummy_388*Dummy_388));
+       const walberla::float64 Dummy_436 = Dummy_411;
+       const walberla::float64 Dummy_437 = Dummy_412;
+       const walberla::float64 Dummy_438 = Dummy_399;
+       const walberla::float64 Dummy_439 = Dummy_406;
+       const walberla::float64 Dummy_440 = Dummy_409;
+       const walberla::float64 Dummy_441 = Dummy_411;
+       const walberla::float64 Dummy_442 = Dummy_374*((Dummy_392*Dummy_392) + (Dummy_395*Dummy_395) + (Dummy_398*Dummy_398));
+       const walberla::float64 Dummy_443 = Dummy_413;
+       const walberla::float64 Dummy_444 = Dummy_403;
+       const walberla::float64 Dummy_445 = Dummy_407;
+       const walberla::float64 Dummy_446 = Dummy_410;
+       const walberla::float64 Dummy_447 = Dummy_412;
+       const walberla::float64 Dummy_448 = Dummy_413;
+       const walberla::float64 Dummy_449 = Dummy_374*((Dummy_400*Dummy_400) + (Dummy_401*Dummy_401) + (Dummy_402*Dummy_402));
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -700,7 +700,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
@@ -719,152 +719,152 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::BLUE_DOWN );
          
-             _data_mat[0] = ((real_t)(Dummy_416*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
-             _data_mat[1] = ((real_t)(Dummy_417*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[2] = ((real_t)(Dummy_418*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[3] = ((real_t)(Dummy_419*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[4] = ((real_t)(Dummy_420*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[5] = ((real_t)(Dummy_421*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[6] = ((real_t)(Dummy_422*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[7] = ((real_t)(Dummy_423*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
-             _data_mat[8] = ((real_t)(Dummy_424*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[9] = ((real_t)(Dummy_425*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[10] = ((real_t)(Dummy_426*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[11] = ((real_t)(Dummy_427*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[12] = ((real_t)(Dummy_428*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[13] = ((real_t)(Dummy_429*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[14] = ((real_t)(Dummy_430*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
-             _data_mat[15] = ((real_t)(Dummy_431*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[16] = ((real_t)(Dummy_432*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[17] = ((real_t)(Dummy_433*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[18] = ((real_t)(Dummy_434*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[19] = ((real_t)(Dummy_435*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[20] = ((real_t)(Dummy_436*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[21] = ((real_t)(Dummy_437*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
-             _data_mat[22] = ((real_t)(Dummy_438*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[23] = ((real_t)(Dummy_439*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[24] = ((real_t)(Dummy_440*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[25] = ((real_t)(Dummy_441*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[26] = ((real_t)(Dummy_442*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[27] = ((real_t)(Dummy_443*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[28] = ((real_t)(Dummy_444*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
-             _data_mat[29] = ((real_t)(Dummy_445*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[30] = ((real_t)(Dummy_446*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[31] = ((real_t)(Dummy_447*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[32] = ((real_t)(Dummy_448*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[33] = ((real_t)(Dummy_449*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[34] = ((real_t)(Dummy_450*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[35] = ((real_t)(Dummy_451*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
+             _data_mat[0] = ((walberla::float64)(Dummy_414*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
+             _data_mat[1] = ((walberla::float64)(Dummy_415*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[2] = ((walberla::float64)(Dummy_416*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[3] = ((walberla::float64)(Dummy_417*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[4] = ((walberla::float64)(Dummy_418*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[5] = ((walberla::float64)(Dummy_419*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[6] = ((walberla::float64)(Dummy_420*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[7] = ((walberla::float64)(Dummy_421*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
+             _data_mat[8] = ((walberla::float64)(Dummy_422*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[9] = ((walberla::float64)(Dummy_423*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[10] = ((walberla::float64)(Dummy_424*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[11] = ((walberla::float64)(Dummy_425*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[12] = ((walberla::float64)(Dummy_426*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[13] = ((walberla::float64)(Dummy_427*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[14] = ((walberla::float64)(Dummy_428*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
+             _data_mat[15] = ((walberla::float64)(Dummy_429*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[16] = ((walberla::float64)(Dummy_430*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[17] = ((walberla::float64)(Dummy_431*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[18] = ((walberla::float64)(Dummy_432*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[19] = ((walberla::float64)(Dummy_433*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[20] = ((walberla::float64)(Dummy_434*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[21] = ((walberla::float64)(Dummy_435*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
+             _data_mat[22] = ((walberla::float64)(Dummy_436*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[23] = ((walberla::float64)(Dummy_437*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[24] = ((walberla::float64)(Dummy_438*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[25] = ((walberla::float64)(Dummy_439*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[26] = ((walberla::float64)(Dummy_440*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[27] = ((walberla::float64)(Dummy_441*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[28] = ((walberla::float64)(Dummy_442*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
+             _data_mat[29] = ((walberla::float64)(Dummy_443*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[30] = ((walberla::float64)(Dummy_444*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[31] = ((walberla::float64)(Dummy_445*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[32] = ((walberla::float64)(Dummy_446*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[33] = ((walberla::float64)(Dummy_447*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[34] = ((walberla::float64)(Dummy_448*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[35] = ((walberla::float64)(Dummy_449*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t Dummy_452 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666666;
-       const real_t Dummy_453 = jac_affine_0_0_GREEN_UP*4.0;
-       const real_t Dummy_454 = jac_affine_1_0_GREEN_UP*4.0;
-       const real_t Dummy_455 = jac_affine_2_0_GREEN_UP*4.0;
-       const real_t Dummy_456 = Dummy_452*(-Dummy_453*jac_affine_0_1_GREEN_UP - Dummy_454*jac_affine_1_1_GREEN_UP - Dummy_455*jac_affine_2_1_GREEN_UP);
-       const real_t Dummy_457 = Dummy_452*(Dummy_453*jac_affine_0_2_GREEN_UP + Dummy_454*jac_affine_1_2_GREEN_UP + Dummy_455*jac_affine_2_2_GREEN_UP);
-       const real_t Dummy_458 = jac_affine_0_0_GREEN_UP*2.0;
-       const real_t Dummy_459 = jac_affine_0_1_GREEN_UP*2.0;
-       const real_t Dummy_460 = -Dummy_458 + Dummy_459;
-       const real_t Dummy_461 = jac_affine_1_0_GREEN_UP*2.0;
-       const real_t Dummy_462 = jac_affine_1_1_GREEN_UP*2.0;
-       const real_t Dummy_463 = -Dummy_461 + Dummy_462;
-       const real_t Dummy_464 = jac_affine_2_0_GREEN_UP*2.0;
-       const real_t Dummy_465 = jac_affine_2_1_GREEN_UP*2.0;
-       const real_t Dummy_466 = -Dummy_464 + Dummy_465;
-       const real_t Dummy_467 = Dummy_452*(Dummy_458*Dummy_460 + Dummy_461*Dummy_463 + Dummy_464*Dummy_466);
-       const real_t Dummy_468 = jac_affine_0_2_GREEN_UP*2.0;
-       const real_t Dummy_469 = -Dummy_468;
-       const real_t Dummy_470 = Dummy_458 + Dummy_469;
-       const real_t Dummy_471 = jac_affine_1_2_GREEN_UP*2.0;
-       const real_t Dummy_472 = -Dummy_471;
-       const real_t Dummy_473 = Dummy_461 + Dummy_472;
-       const real_t Dummy_474 = jac_affine_2_2_GREEN_UP*2.0;
-       const real_t Dummy_475 = -Dummy_474;
-       const real_t Dummy_476 = Dummy_464 + Dummy_475;
-       const real_t Dummy_477 = Dummy_452*(Dummy_458*Dummy_470 + Dummy_461*Dummy_473 + Dummy_464*Dummy_476);
-       const real_t Dummy_478 = -Dummy_459 - Dummy_469;
-       const real_t Dummy_479 = -Dummy_462 - Dummy_472;
-       const real_t Dummy_480 = -Dummy_465 - Dummy_475;
-       const real_t Dummy_481 = Dummy_452*(Dummy_458*Dummy_478 + Dummy_461*Dummy_479 + Dummy_464*Dummy_480);
-       const real_t Dummy_482 = Dummy_452*(jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0);
-       const real_t Dummy_483 = Dummy_452*(-Dummy_459*Dummy_460 - Dummy_462*Dummy_463 - Dummy_465*Dummy_466);
-       const real_t Dummy_484 = Dummy_452*(-Dummy_459*Dummy_470 - Dummy_462*Dummy_473 - Dummy_465*Dummy_476);
-       const real_t Dummy_485 = Dummy_452*(-Dummy_459*Dummy_478 - Dummy_462*Dummy_479 - Dummy_465*Dummy_480);
-       const real_t Dummy_486 = Dummy_452*(Dummy_460*Dummy_468 + Dummy_463*Dummy_471 + Dummy_466*Dummy_474);
-       const real_t Dummy_487 = Dummy_452*(Dummy_468*Dummy_470 + Dummy_471*Dummy_473 + Dummy_474*Dummy_476);
-       const real_t Dummy_488 = Dummy_452*(Dummy_468*Dummy_478 + Dummy_471*Dummy_479 + Dummy_474*Dummy_480);
-       const real_t Dummy_489 = Dummy_452*(Dummy_460*Dummy_470 + Dummy_463*Dummy_473 + Dummy_466*Dummy_476);
-       const real_t Dummy_490 = Dummy_452*(Dummy_460*Dummy_478 + Dummy_463*Dummy_479 + Dummy_466*Dummy_480);
-       const real_t Dummy_491 = Dummy_452*(Dummy_470*Dummy_478 + Dummy_473*Dummy_479 + Dummy_476*Dummy_480);
-       const real_t Dummy_492 = Dummy_452*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
-       const real_t Dummy_493 = Dummy_456;
-       const real_t Dummy_494 = Dummy_457;
-       const real_t Dummy_495 = Dummy_467;
-       const real_t Dummy_496 = Dummy_477;
-       const real_t Dummy_497 = Dummy_481;
-       const real_t Dummy_498 = Dummy_456;
-       const real_t Dummy_499 = Dummy_452*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
-       const real_t Dummy_500 = Dummy_482;
-       const real_t Dummy_501 = Dummy_483;
-       const real_t Dummy_502 = Dummy_484;
-       const real_t Dummy_503 = Dummy_485;
-       const real_t Dummy_504 = Dummy_457;
-       const real_t Dummy_505 = Dummy_482;
-       const real_t Dummy_506 = Dummy_452*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
-       const real_t Dummy_507 = Dummy_486;
-       const real_t Dummy_508 = Dummy_487;
-       const real_t Dummy_509 = Dummy_488;
-       const real_t Dummy_510 = Dummy_467;
-       const real_t Dummy_511 = Dummy_483;
-       const real_t Dummy_512 = Dummy_486;
-       const real_t Dummy_513 = Dummy_452*((Dummy_460*Dummy_460) + (Dummy_463*Dummy_463) + (Dummy_466*Dummy_466));
-       const real_t Dummy_514 = Dummy_489;
-       const real_t Dummy_515 = Dummy_490;
-       const real_t Dummy_516 = Dummy_477;
-       const real_t Dummy_517 = Dummy_484;
-       const real_t Dummy_518 = Dummy_487;
-       const real_t Dummy_519 = Dummy_489;
-       const real_t Dummy_520 = Dummy_452*((Dummy_470*Dummy_470) + (Dummy_473*Dummy_473) + (Dummy_476*Dummy_476));
-       const real_t Dummy_521 = Dummy_491;
-       const real_t Dummy_522 = Dummy_481;
-       const real_t Dummy_523 = Dummy_485;
-       const real_t Dummy_524 = Dummy_488;
-       const real_t Dummy_525 = Dummy_490;
-       const real_t Dummy_526 = Dummy_491;
-       const real_t Dummy_527 = Dummy_452*((Dummy_478*Dummy_478) + (Dummy_479*Dummy_479) + (Dummy_480*Dummy_480));
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 Dummy_450 = 1.0 / (abs_det_jac_affine_GREEN_UP)*0.16666666666666663;
+       const walberla::float64 Dummy_451 = jac_affine_0_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_452 = jac_affine_1_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_453 = jac_affine_2_0_GREEN_UP*4.0;
+       const walberla::float64 Dummy_454 = Dummy_450*(-Dummy_451*jac_affine_0_1_GREEN_UP - Dummy_452*jac_affine_1_1_GREEN_UP - Dummy_453*jac_affine_2_1_GREEN_UP);
+       const walberla::float64 Dummy_455 = Dummy_450*(Dummy_451*jac_affine_0_2_GREEN_UP + Dummy_452*jac_affine_1_2_GREEN_UP + Dummy_453*jac_affine_2_2_GREEN_UP);
+       const walberla::float64 Dummy_456 = jac_affine_0_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_457 = jac_affine_0_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_458 = -Dummy_456 + Dummy_457;
+       const walberla::float64 Dummy_459 = jac_affine_1_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_460 = jac_affine_1_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_461 = -Dummy_459 + Dummy_460;
+       const walberla::float64 Dummy_462 = jac_affine_2_0_GREEN_UP*2.0;
+       const walberla::float64 Dummy_463 = jac_affine_2_1_GREEN_UP*2.0;
+       const walberla::float64 Dummy_464 = -Dummy_462 + Dummy_463;
+       const walberla::float64 Dummy_465 = Dummy_450*(Dummy_456*Dummy_458 + Dummy_459*Dummy_461 + Dummy_462*Dummy_464);
+       const walberla::float64 Dummy_466 = jac_affine_0_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_467 = -Dummy_466;
+       const walberla::float64 Dummy_468 = Dummy_456 + Dummy_467;
+       const walberla::float64 Dummy_469 = jac_affine_1_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_470 = -Dummy_469;
+       const walberla::float64 Dummy_471 = Dummy_459 + Dummy_470;
+       const walberla::float64 Dummy_472 = jac_affine_2_2_GREEN_UP*2.0;
+       const walberla::float64 Dummy_473 = -Dummy_472;
+       const walberla::float64 Dummy_474 = Dummy_462 + Dummy_473;
+       const walberla::float64 Dummy_475 = Dummy_450*(Dummy_456*Dummy_468 + Dummy_459*Dummy_471 + Dummy_462*Dummy_474);
+       const walberla::float64 Dummy_476 = -Dummy_457 - Dummy_467;
+       const walberla::float64 Dummy_477 = -Dummy_460 - Dummy_470;
+       const walberla::float64 Dummy_478 = -Dummy_463 - Dummy_473;
+       const walberla::float64 Dummy_479 = Dummy_450*(Dummy_456*Dummy_476 + Dummy_459*Dummy_477 + Dummy_462*Dummy_478);
+       const walberla::float64 Dummy_480 = Dummy_450*(jac_affine_0_1_GREEN_UP*jac_affine_0_2_GREEN_UP*-4.0 + jac_affine_1_1_GREEN_UP*jac_affine_1_2_GREEN_UP*-4.0 + jac_affine_2_1_GREEN_UP*jac_affine_2_2_GREEN_UP*-4.0);
+       const walberla::float64 Dummy_481 = Dummy_450*(-Dummy_457*Dummy_458 - Dummy_460*Dummy_461 - Dummy_463*Dummy_464);
+       const walberla::float64 Dummy_482 = Dummy_450*(-Dummy_457*Dummy_468 - Dummy_460*Dummy_471 - Dummy_463*Dummy_474);
+       const walberla::float64 Dummy_483 = Dummy_450*(-Dummy_457*Dummy_476 - Dummy_460*Dummy_477 - Dummy_463*Dummy_478);
+       const walberla::float64 Dummy_484 = Dummy_450*(Dummy_458*Dummy_466 + Dummy_461*Dummy_469 + Dummy_464*Dummy_472);
+       const walberla::float64 Dummy_485 = Dummy_450*(Dummy_466*Dummy_468 + Dummy_469*Dummy_471 + Dummy_472*Dummy_474);
+       const walberla::float64 Dummy_486 = Dummy_450*(Dummy_466*Dummy_476 + Dummy_469*Dummy_477 + Dummy_472*Dummy_478);
+       const walberla::float64 Dummy_487 = Dummy_450*(Dummy_458*Dummy_468 + Dummy_461*Dummy_471 + Dummy_464*Dummy_474);
+       const walberla::float64 Dummy_488 = Dummy_450*(Dummy_458*Dummy_476 + Dummy_461*Dummy_477 + Dummy_464*Dummy_478);
+       const walberla::float64 Dummy_489 = Dummy_450*(Dummy_468*Dummy_476 + Dummy_471*Dummy_477 + Dummy_474*Dummy_478);
+       const walberla::float64 Dummy_490 = Dummy_450*((jac_affine_0_0_GREEN_UP*jac_affine_0_0_GREEN_UP)*4.0 + (jac_affine_1_0_GREEN_UP*jac_affine_1_0_GREEN_UP)*4.0 + (jac_affine_2_0_GREEN_UP*jac_affine_2_0_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_491 = Dummy_454;
+       const walberla::float64 Dummy_492 = Dummy_455;
+       const walberla::float64 Dummy_493 = Dummy_465;
+       const walberla::float64 Dummy_494 = Dummy_475;
+       const walberla::float64 Dummy_495 = Dummy_479;
+       const walberla::float64 Dummy_496 = Dummy_454;
+       const walberla::float64 Dummy_497 = Dummy_450*((jac_affine_0_1_GREEN_UP*jac_affine_0_1_GREEN_UP)*4.0 + (jac_affine_1_1_GREEN_UP*jac_affine_1_1_GREEN_UP)*4.0 + (jac_affine_2_1_GREEN_UP*jac_affine_2_1_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_498 = Dummy_480;
+       const walberla::float64 Dummy_499 = Dummy_481;
+       const walberla::float64 Dummy_500 = Dummy_482;
+       const walberla::float64 Dummy_501 = Dummy_483;
+       const walberla::float64 Dummy_502 = Dummy_455;
+       const walberla::float64 Dummy_503 = Dummy_480;
+       const walberla::float64 Dummy_504 = Dummy_450*((jac_affine_0_2_GREEN_UP*jac_affine_0_2_GREEN_UP)*4.0 + (jac_affine_1_2_GREEN_UP*jac_affine_1_2_GREEN_UP)*4.0 + (jac_affine_2_2_GREEN_UP*jac_affine_2_2_GREEN_UP)*4.0);
+       const walberla::float64 Dummy_505 = Dummy_484;
+       const walberla::float64 Dummy_506 = Dummy_485;
+       const walberla::float64 Dummy_507 = Dummy_486;
+       const walberla::float64 Dummy_508 = Dummy_465;
+       const walberla::float64 Dummy_509 = Dummy_481;
+       const walberla::float64 Dummy_510 = Dummy_484;
+       const walberla::float64 Dummy_511 = Dummy_450*((Dummy_458*Dummy_458) + (Dummy_461*Dummy_461) + (Dummy_464*Dummy_464));
+       const walberla::float64 Dummy_512 = Dummy_487;
+       const walberla::float64 Dummy_513 = Dummy_488;
+       const walberla::float64 Dummy_514 = Dummy_475;
+       const walberla::float64 Dummy_515 = Dummy_482;
+       const walberla::float64 Dummy_516 = Dummy_485;
+       const walberla::float64 Dummy_517 = Dummy_487;
+       const walberla::float64 Dummy_518 = Dummy_450*((Dummy_468*Dummy_468) + (Dummy_471*Dummy_471) + (Dummy_474*Dummy_474));
+       const walberla::float64 Dummy_519 = Dummy_489;
+       const walberla::float64 Dummy_520 = Dummy_479;
+       const walberla::float64 Dummy_521 = Dummy_483;
+       const walberla::float64 Dummy_522 = Dummy_486;
+       const walberla::float64 Dummy_523 = Dummy_488;
+       const walberla::float64 Dummy_524 = Dummy_489;
+       const walberla::float64 Dummy_525 = Dummy_450*((Dummy_476*Dummy_476) + (Dummy_477*Dummy_477) + (Dummy_478*Dummy_478));
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -874,7 +874,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
@@ -893,155 +893,155 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::GREEN_UP );
          
-             _data_mat[0] = ((real_t)(Dummy_492*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
-             _data_mat[1] = ((real_t)(Dummy_493*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[2] = ((real_t)(Dummy_494*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[3] = ((real_t)(Dummy_495*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[4] = ((real_t)(Dummy_496*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[5] = ((real_t)(Dummy_497*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[6] = ((real_t)(Dummy_498*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[7] = ((real_t)(Dummy_499*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
-             _data_mat[8] = ((real_t)(Dummy_500*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[9] = ((real_t)(Dummy_501*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[10] = ((real_t)(Dummy_502*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[11] = ((real_t)(Dummy_503*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[12] = ((real_t)(Dummy_504*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[13] = ((real_t)(Dummy_505*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[14] = ((real_t)(Dummy_506*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
-             _data_mat[15] = ((real_t)(Dummy_507*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[16] = ((real_t)(Dummy_508*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[17] = ((real_t)(Dummy_509*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[18] = ((real_t)(Dummy_510*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[19] = ((real_t)(Dummy_511*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[20] = ((real_t)(Dummy_512*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[21] = ((real_t)(Dummy_513*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
-             _data_mat[22] = ((real_t)(Dummy_514*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[23] = ((real_t)(Dummy_515*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[24] = ((real_t)(Dummy_516*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[25] = ((real_t)(Dummy_517*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[26] = ((real_t)(Dummy_518*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[27] = ((real_t)(Dummy_519*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[28] = ((real_t)(Dummy_520*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
-             _data_mat[29] = ((real_t)(Dummy_521*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[30] = ((real_t)(Dummy_522*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[31] = ((real_t)(Dummy_523*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[32] = ((real_t)(Dummy_524*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[33] = ((real_t)(Dummy_525*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[34] = ((real_t)(Dummy_526*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[35] = ((real_t)(Dummy_527*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
+             _data_mat[0] = ((walberla::float64)(Dummy_490*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
+             _data_mat[1] = ((walberla::float64)(Dummy_491*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[2] = ((walberla::float64)(Dummy_492*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[3] = ((walberla::float64)(Dummy_493*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[4] = ((walberla::float64)(Dummy_494*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[5] = ((walberla::float64)(Dummy_495*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[6] = ((walberla::float64)(Dummy_496*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[7] = ((walberla::float64)(Dummy_497*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
+             _data_mat[8] = ((walberla::float64)(Dummy_498*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[9] = ((walberla::float64)(Dummy_499*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[10] = ((walberla::float64)(Dummy_500*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[11] = ((walberla::float64)(Dummy_501*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[12] = ((walberla::float64)(Dummy_502*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[13] = ((walberla::float64)(Dummy_503*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[14] = ((walberla::float64)(Dummy_504*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
+             _data_mat[15] = ((walberla::float64)(Dummy_505*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[16] = ((walberla::float64)(Dummy_506*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[17] = ((walberla::float64)(Dummy_507*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[18] = ((walberla::float64)(Dummy_508*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[19] = ((walberla::float64)(Dummy_509*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[20] = ((walberla::float64)(Dummy_510*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[21] = ((walberla::float64)(Dummy_511*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
+             _data_mat[22] = ((walberla::float64)(Dummy_512*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[23] = ((walberla::float64)(Dummy_513*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[24] = ((walberla::float64)(Dummy_514*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[25] = ((walberla::float64)(Dummy_515*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[26] = ((walberla::float64)(Dummy_516*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[27] = ((walberla::float64)(Dummy_517*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[28] = ((walberla::float64)(Dummy_518*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
+             _data_mat[29] = ((walberla::float64)(Dummy_519*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[30] = ((walberla::float64)(Dummy_520*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[31] = ((walberla::float64)(Dummy_521*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[32] = ((walberla::float64)(Dummy_522*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[33] = ((walberla::float64)(Dummy_523*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[34] = ((walberla::float64)(Dummy_524*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[35] = ((walberla::float64)(Dummy_525*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t Dummy_528 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666666;
-       const real_t Dummy_529 = jac_affine_0_0_GREEN_DOWN*4.0;
-       const real_t Dummy_530 = jac_affine_1_0_GREEN_DOWN*4.0;
-       const real_t Dummy_531 = jac_affine_2_0_GREEN_DOWN*4.0;
-       const real_t Dummy_532 = Dummy_528*(-Dummy_529*jac_affine_0_1_GREEN_DOWN - Dummy_530*jac_affine_1_1_GREEN_DOWN - Dummy_531*jac_affine_2_1_GREEN_DOWN);
-       const real_t Dummy_533 = Dummy_528*(Dummy_529*jac_affine_0_2_GREEN_DOWN + Dummy_530*jac_affine_1_2_GREEN_DOWN + Dummy_531*jac_affine_2_2_GREEN_DOWN);
-       const real_t Dummy_534 = jac_affine_0_0_GREEN_DOWN*2.0;
-       const real_t Dummy_535 = jac_affine_0_1_GREEN_DOWN*2.0;
-       const real_t Dummy_536 = -Dummy_534 + Dummy_535;
-       const real_t Dummy_537 = jac_affine_1_0_GREEN_DOWN*2.0;
-       const real_t Dummy_538 = jac_affine_1_1_GREEN_DOWN*2.0;
-       const real_t Dummy_539 = -Dummy_537 + Dummy_538;
-       const real_t Dummy_540 = jac_affine_2_0_GREEN_DOWN*2.0;
-       const real_t Dummy_541 = jac_affine_2_1_GREEN_DOWN*2.0;
-       const real_t Dummy_542 = -Dummy_540 + Dummy_541;
-       const real_t Dummy_543 = Dummy_528*(Dummy_534*Dummy_536 + Dummy_537*Dummy_539 + Dummy_540*Dummy_542);
-       const real_t Dummy_544 = jac_affine_0_2_GREEN_DOWN*2.0;
-       const real_t Dummy_545 = -Dummy_544;
-       const real_t Dummy_546 = Dummy_534 + Dummy_545;
-       const real_t Dummy_547 = jac_affine_1_2_GREEN_DOWN*2.0;
-       const real_t Dummy_548 = -Dummy_547;
-       const real_t Dummy_549 = Dummy_537 + Dummy_548;
-       const real_t Dummy_550 = jac_affine_2_2_GREEN_DOWN*2.0;
-       const real_t Dummy_551 = -Dummy_550;
-       const real_t Dummy_552 = Dummy_540 + Dummy_551;
-       const real_t Dummy_553 = Dummy_528*(Dummy_534*Dummy_546 + Dummy_537*Dummy_549 + Dummy_540*Dummy_552);
-       const real_t Dummy_554 = -Dummy_535 - Dummy_545;
-       const real_t Dummy_555 = -Dummy_538 - Dummy_548;
-       const real_t Dummy_556 = -Dummy_541 - Dummy_551;
-       const real_t Dummy_557 = Dummy_528*(Dummy_534*Dummy_554 + Dummy_537*Dummy_555 + Dummy_540*Dummy_556);
-       const real_t Dummy_558 = Dummy_528*(jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0);
-       const real_t Dummy_559 = Dummy_528*(-Dummy_535*Dummy_536 - Dummy_538*Dummy_539 - Dummy_541*Dummy_542);
-       const real_t Dummy_560 = Dummy_528*(-Dummy_535*Dummy_546 - Dummy_538*Dummy_549 - Dummy_541*Dummy_552);
-       const real_t Dummy_561 = Dummy_528*(-Dummy_535*Dummy_554 - Dummy_538*Dummy_555 - Dummy_541*Dummy_556);
-       const real_t Dummy_562 = Dummy_528*(Dummy_536*Dummy_544 + Dummy_539*Dummy_547 + Dummy_542*Dummy_550);
-       const real_t Dummy_563 = Dummy_528*(Dummy_544*Dummy_546 + Dummy_547*Dummy_549 + Dummy_550*Dummy_552);
-       const real_t Dummy_564 = Dummy_528*(Dummy_544*Dummy_554 + Dummy_547*Dummy_555 + Dummy_550*Dummy_556);
-       const real_t Dummy_565 = Dummy_528*(Dummy_536*Dummy_546 + Dummy_539*Dummy_549 + Dummy_542*Dummy_552);
-       const real_t Dummy_566 = Dummy_528*(Dummy_536*Dummy_554 + Dummy_539*Dummy_555 + Dummy_542*Dummy_556);
-       const real_t Dummy_567 = Dummy_528*(Dummy_546*Dummy_554 + Dummy_549*Dummy_555 + Dummy_552*Dummy_556);
-       const real_t Dummy_568 = Dummy_528*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
-       const real_t Dummy_569 = Dummy_532;
-       const real_t Dummy_570 = Dummy_533;
-       const real_t Dummy_571 = Dummy_543;
-       const real_t Dummy_572 = Dummy_553;
-       const real_t Dummy_573 = Dummy_557;
-       const real_t Dummy_574 = Dummy_532;
-       const real_t Dummy_575 = Dummy_528*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
-       const real_t Dummy_576 = Dummy_558;
-       const real_t Dummy_577 = Dummy_559;
-       const real_t Dummy_578 = Dummy_560;
-       const real_t Dummy_579 = Dummy_561;
-       const real_t Dummy_580 = Dummy_533;
-       const real_t Dummy_581 = Dummy_558;
-       const real_t Dummy_582 = Dummy_528*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
-       const real_t Dummy_583 = Dummy_562;
-       const real_t Dummy_584 = Dummy_563;
-       const real_t Dummy_585 = Dummy_564;
-       const real_t Dummy_586 = Dummy_543;
-       const real_t Dummy_587 = Dummy_559;
-       const real_t Dummy_588 = Dummy_562;
-       const real_t Dummy_589 = Dummy_528*((Dummy_536*Dummy_536) + (Dummy_539*Dummy_539) + (Dummy_542*Dummy_542));
-       const real_t Dummy_590 = Dummy_565;
-       const real_t Dummy_591 = Dummy_566;
-       const real_t Dummy_592 = Dummy_553;
-       const real_t Dummy_593 = Dummy_560;
-       const real_t Dummy_594 = Dummy_563;
-       const real_t Dummy_595 = Dummy_565;
-       const real_t Dummy_596 = Dummy_528*((Dummy_546*Dummy_546) + (Dummy_549*Dummy_549) + (Dummy_552*Dummy_552));
-       const real_t Dummy_597 = Dummy_567;
-       const real_t Dummy_598 = Dummy_557;
-       const real_t Dummy_599 = Dummy_561;
-       const real_t Dummy_600 = Dummy_564;
-       const real_t Dummy_601 = Dummy_566;
-       const real_t Dummy_602 = Dummy_567;
-       const real_t Dummy_603 = Dummy_528*((Dummy_554*Dummy_554) + (Dummy_555*Dummy_555) + (Dummy_556*Dummy_556));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 Dummy_526 = 1.0 / (abs_det_jac_affine_GREEN_DOWN)*0.16666666666666663;
+       const walberla::float64 Dummy_527 = jac_affine_0_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_528 = jac_affine_1_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_529 = jac_affine_2_0_GREEN_DOWN*4.0;
+       const walberla::float64 Dummy_530 = Dummy_526*(-Dummy_527*jac_affine_0_1_GREEN_DOWN - Dummy_528*jac_affine_1_1_GREEN_DOWN - Dummy_529*jac_affine_2_1_GREEN_DOWN);
+       const walberla::float64 Dummy_531 = Dummy_526*(Dummy_527*jac_affine_0_2_GREEN_DOWN + Dummy_528*jac_affine_1_2_GREEN_DOWN + Dummy_529*jac_affine_2_2_GREEN_DOWN);
+       const walberla::float64 Dummy_532 = jac_affine_0_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_533 = jac_affine_0_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_534 = -Dummy_532 + Dummy_533;
+       const walberla::float64 Dummy_535 = jac_affine_1_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_536 = jac_affine_1_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_537 = -Dummy_535 + Dummy_536;
+       const walberla::float64 Dummy_538 = jac_affine_2_0_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_539 = jac_affine_2_1_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_540 = -Dummy_538 + Dummy_539;
+       const walberla::float64 Dummy_541 = Dummy_526*(Dummy_532*Dummy_534 + Dummy_535*Dummy_537 + Dummy_538*Dummy_540);
+       const walberla::float64 Dummy_542 = jac_affine_0_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_543 = -Dummy_542;
+       const walberla::float64 Dummy_544 = Dummy_532 + Dummy_543;
+       const walberla::float64 Dummy_545 = jac_affine_1_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_546 = -Dummy_545;
+       const walberla::float64 Dummy_547 = Dummy_535 + Dummy_546;
+       const walberla::float64 Dummy_548 = jac_affine_2_2_GREEN_DOWN*2.0;
+       const walberla::float64 Dummy_549 = -Dummy_548;
+       const walberla::float64 Dummy_550 = Dummy_538 + Dummy_549;
+       const walberla::float64 Dummy_551 = Dummy_526*(Dummy_532*Dummy_544 + Dummy_535*Dummy_547 + Dummy_538*Dummy_550);
+       const walberla::float64 Dummy_552 = -Dummy_533 - Dummy_543;
+       const walberla::float64 Dummy_553 = -Dummy_536 - Dummy_546;
+       const walberla::float64 Dummy_554 = -Dummy_539 - Dummy_549;
+       const walberla::float64 Dummy_555 = Dummy_526*(Dummy_532*Dummy_552 + Dummy_535*Dummy_553 + Dummy_538*Dummy_554);
+       const walberla::float64 Dummy_556 = Dummy_526*(jac_affine_0_1_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN*-4.0 + jac_affine_1_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*-4.0 + jac_affine_2_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN*-4.0);
+       const walberla::float64 Dummy_557 = Dummy_526*(-Dummy_533*Dummy_534 - Dummy_536*Dummy_537 - Dummy_539*Dummy_540);
+       const walberla::float64 Dummy_558 = Dummy_526*(-Dummy_533*Dummy_544 - Dummy_536*Dummy_547 - Dummy_539*Dummy_550);
+       const walberla::float64 Dummy_559 = Dummy_526*(-Dummy_533*Dummy_552 - Dummy_536*Dummy_553 - Dummy_539*Dummy_554);
+       const walberla::float64 Dummy_560 = Dummy_526*(Dummy_534*Dummy_542 + Dummy_537*Dummy_545 + Dummy_540*Dummy_548);
+       const walberla::float64 Dummy_561 = Dummy_526*(Dummy_542*Dummy_544 + Dummy_545*Dummy_547 + Dummy_548*Dummy_550);
+       const walberla::float64 Dummy_562 = Dummy_526*(Dummy_542*Dummy_552 + Dummy_545*Dummy_553 + Dummy_548*Dummy_554);
+       const walberla::float64 Dummy_563 = Dummy_526*(Dummy_534*Dummy_544 + Dummy_537*Dummy_547 + Dummy_540*Dummy_550);
+       const walberla::float64 Dummy_564 = Dummy_526*(Dummy_534*Dummy_552 + Dummy_537*Dummy_553 + Dummy_540*Dummy_554);
+       const walberla::float64 Dummy_565 = Dummy_526*(Dummy_544*Dummy_552 + Dummy_547*Dummy_553 + Dummy_550*Dummy_554);
+       const walberla::float64 Dummy_566 = Dummy_526*((jac_affine_0_0_GREEN_DOWN*jac_affine_0_0_GREEN_DOWN)*4.0 + (jac_affine_1_0_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN)*4.0 + (jac_affine_2_0_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_567 = Dummy_530;
+       const walberla::float64 Dummy_568 = Dummy_531;
+       const walberla::float64 Dummy_569 = Dummy_541;
+       const walberla::float64 Dummy_570 = Dummy_551;
+       const walberla::float64 Dummy_571 = Dummy_555;
+       const walberla::float64 Dummy_572 = Dummy_530;
+       const walberla::float64 Dummy_573 = Dummy_526*((jac_affine_0_1_GREEN_DOWN*jac_affine_0_1_GREEN_DOWN)*4.0 + (jac_affine_1_1_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN)*4.0 + (jac_affine_2_1_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_574 = Dummy_556;
+       const walberla::float64 Dummy_575 = Dummy_557;
+       const walberla::float64 Dummy_576 = Dummy_558;
+       const walberla::float64 Dummy_577 = Dummy_559;
+       const walberla::float64 Dummy_578 = Dummy_531;
+       const walberla::float64 Dummy_579 = Dummy_556;
+       const walberla::float64 Dummy_580 = Dummy_526*((jac_affine_0_2_GREEN_DOWN*jac_affine_0_2_GREEN_DOWN)*4.0 + (jac_affine_1_2_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN)*4.0 + (jac_affine_2_2_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN)*4.0);
+       const walberla::float64 Dummy_581 = Dummy_560;
+       const walberla::float64 Dummy_582 = Dummy_561;
+       const walberla::float64 Dummy_583 = Dummy_562;
+       const walberla::float64 Dummy_584 = Dummy_541;
+       const walberla::float64 Dummy_585 = Dummy_557;
+       const walberla::float64 Dummy_586 = Dummy_560;
+       const walberla::float64 Dummy_587 = Dummy_526*((Dummy_534*Dummy_534) + (Dummy_537*Dummy_537) + (Dummy_540*Dummy_540));
+       const walberla::float64 Dummy_588 = Dummy_563;
+       const walberla::float64 Dummy_589 = Dummy_564;
+       const walberla::float64 Dummy_590 = Dummy_551;
+       const walberla::float64 Dummy_591 = Dummy_558;
+       const walberla::float64 Dummy_592 = Dummy_561;
+       const walberla::float64 Dummy_593 = Dummy_563;
+       const walberla::float64 Dummy_594 = Dummy_526*((Dummy_544*Dummy_544) + (Dummy_547*Dummy_547) + (Dummy_550*Dummy_550));
+       const walberla::float64 Dummy_595 = Dummy_565;
+       const walberla::float64 Dummy_596 = Dummy_555;
+       const walberla::float64 Dummy_597 = Dummy_559;
+       const walberla::float64 Dummy_598 = Dummy_562;
+       const walberla::float64 Dummy_599 = Dummy_564;
+       const walberla::float64 Dummy_600 = Dummy_565;
+       const walberla::float64 Dummy_601 = Dummy_526*((Dummy_552*Dummy_552) + (Dummy_553*Dummy_553) + (Dummy_554*Dummy_554));
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -1051,7 +1051,7 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))]));
@@ -1070,42 +1070,42 @@ void N1E1ElementwiseCurlCurl::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, id
          
              const Eigen::DiagonalMatrix< real_t, 6 > basisTransformation = n1e1::macrocell::basisTransformation( level, cell, {ctr_0, ctr_1, ctr_2}, celldof::CellType::GREEN_DOWN );
          
-             _data_mat[0] = ((real_t)(Dummy_568*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
-             _data_mat[1] = ((real_t)(Dummy_569*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[2] = ((real_t)(Dummy_570*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[3] = ((real_t)(Dummy_571*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[4] = ((real_t)(Dummy_572*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[5] = ((real_t)(Dummy_573*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[6] = ((real_t)(Dummy_574*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
-             _data_mat[7] = ((real_t)(Dummy_575*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
-             _data_mat[8] = ((real_t)(Dummy_576*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[9] = ((real_t)(Dummy_577*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[10] = ((real_t)(Dummy_578*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[11] = ((real_t)(Dummy_579*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[12] = ((real_t)(Dummy_580*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
-             _data_mat[13] = ((real_t)(Dummy_581*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
-             _data_mat[14] = ((real_t)(Dummy_582*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
-             _data_mat[15] = ((real_t)(Dummy_583*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[16] = ((real_t)(Dummy_584*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[17] = ((real_t)(Dummy_585*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[18] = ((real_t)(Dummy_586*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
-             _data_mat[19] = ((real_t)(Dummy_587*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
-             _data_mat[20] = ((real_t)(Dummy_588*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
-             _data_mat[21] = ((real_t)(Dummy_589*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
-             _data_mat[22] = ((real_t)(Dummy_590*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[23] = ((real_t)(Dummy_591*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[24] = ((real_t)(Dummy_592*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
-             _data_mat[25] = ((real_t)(Dummy_593*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
-             _data_mat[26] = ((real_t)(Dummy_594*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
-             _data_mat[27] = ((real_t)(Dummy_595*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
-             _data_mat[28] = ((real_t)(Dummy_596*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
-             _data_mat[29] = ((real_t)(Dummy_597*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[30] = ((real_t)(Dummy_598*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
-             _data_mat[31] = ((real_t)(Dummy_599*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
-             _data_mat[32] = ((real_t)(Dummy_600*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
-             _data_mat[33] = ((real_t)(Dummy_601*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
-             _data_mat[34] = ((real_t)(Dummy_602*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
-             _data_mat[35] = ((real_t)(Dummy_603*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
+             _data_mat[0] = ((walberla::float64)(Dummy_566*(basisTransformation.diagonal()(0)*basisTransformation.diagonal()(0))));
+             _data_mat[1] = ((walberla::float64)(Dummy_567*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[2] = ((walberla::float64)(Dummy_568*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[3] = ((walberla::float64)(Dummy_569*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[4] = ((walberla::float64)(Dummy_570*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[5] = ((walberla::float64)(Dummy_571*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[6] = ((walberla::float64)(Dummy_572*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(1)));
+             _data_mat[7] = ((walberla::float64)(Dummy_573*(basisTransformation.diagonal()(1)*basisTransformation.diagonal()(1))));
+             _data_mat[8] = ((walberla::float64)(Dummy_574*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[9] = ((walberla::float64)(Dummy_575*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[10] = ((walberla::float64)(Dummy_576*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[11] = ((walberla::float64)(Dummy_577*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[12] = ((walberla::float64)(Dummy_578*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(2)));
+             _data_mat[13] = ((walberla::float64)(Dummy_579*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(2)));
+             _data_mat[14] = ((walberla::float64)(Dummy_580*(basisTransformation.diagonal()(2)*basisTransformation.diagonal()(2))));
+             _data_mat[15] = ((walberla::float64)(Dummy_581*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[16] = ((walberla::float64)(Dummy_582*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[17] = ((walberla::float64)(Dummy_583*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[18] = ((walberla::float64)(Dummy_584*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(3)));
+             _data_mat[19] = ((walberla::float64)(Dummy_585*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(3)));
+             _data_mat[20] = ((walberla::float64)(Dummy_586*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(3)));
+             _data_mat[21] = ((walberla::float64)(Dummy_587*(basisTransformation.diagonal()(3)*basisTransformation.diagonal()(3))));
+             _data_mat[22] = ((walberla::float64)(Dummy_588*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[23] = ((walberla::float64)(Dummy_589*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[24] = ((walberla::float64)(Dummy_590*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(4)));
+             _data_mat[25] = ((walberla::float64)(Dummy_591*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(4)));
+             _data_mat[26] = ((walberla::float64)(Dummy_592*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(4)));
+             _data_mat[27] = ((walberla::float64)(Dummy_593*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(4)));
+             _data_mat[28] = ((walberla::float64)(Dummy_594*(basisTransformation.diagonal()(4)*basisTransformation.diagonal()(4))));
+             _data_mat[29] = ((walberla::float64)(Dummy_595*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[30] = ((walberla::float64)(Dummy_596*basisTransformation.diagonal()(0)*basisTransformation.diagonal()(5)));
+             _data_mat[31] = ((walberla::float64)(Dummy_597*basisTransformation.diagonal()(1)*basisTransformation.diagonal()(5)));
+             _data_mat[32] = ((walberla::float64)(Dummy_598*basisTransformation.diagonal()(2)*basisTransformation.diagonal()(5)));
+             _data_mat[33] = ((walberla::float64)(Dummy_599*basisTransformation.diagonal()(3)*basisTransformation.diagonal()(5)));
+             _data_mat[34] = ((walberla::float64)(Dummy_600*basisTransformation.diagonal()(4)*basisTransformation.diagonal()(5)));
+             _data_mat[35] = ((walberla::float64)(Dummy_601*(basisTransformation.diagonal()(5)*basisTransformation.diagonal()(5))));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/diffusion/CMakeLists.txt b/operators/diffusion/CMakeLists.txt
index 0ff5d6523fbeb7806595b09950fd290942e039bc..b36c4566bc93d0cd4038ad7062cc52968b42b9a6 100644
--- a/operators/diffusion/CMakeLists.txt
+++ b/operators/diffusion/CMakeLists.txt
@@ -43,4 +43,8 @@ endif()
 if (HYTEG_BUILD_WITH_PETSC)
    target_link_libraries(opgen-diffusion PUBLIC PETSc::PETSc)
 endif ()
-target_compile_features(opgen-diffusion PUBLIC cxx_std_17)
+if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)
+    target_compile_features(opgen-diffusion PUBLIC cxx_std_23)
+else ()
+    target_compile_features(opgen-diffusion PUBLIC cxx_std_17)
+endif ()
diff --git a/operators/diffusion/P1ElementwiseDiffusion.cpp b/operators/diffusion/P1ElementwiseDiffusion.cpp
index 6e4b237bbb3363285a54f07172e2a3f23e871ba9..708c9c8dcb5026c481e04469052af96f45d17c76 100644
--- a/operators/diffusion/P1ElementwiseDiffusion.cpp
+++ b/operators/diffusion/P1ElementwiseDiffusion.cpp
@@ -53,13 +53,16 @@ P1ElementwiseDiffusion::P1ElementwiseDiffusion( const std::shared_ptr< Primitive
 : Operator( storage, minLevel, maxLevel )
 {}
 
-void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
-                                    const P1Function< real_t >& dst,
-                                    uint_t                      level,
-                                    DoFType                     flag,
-                                    UpdateType                  updateType ) const
+void P1ElementwiseDiffusion::apply( const P1Function< walberla::float64 >& src,
+                                    const P1Function< walberla::float64 >& dst,
+                                    uint_t                                 level,
+                                    DoFType                                flag,
+                                    UpdateType                             updateType ) const
 {
+   this->startTiming( "apply" );
+
    // Make sure that halos are up-to-date
+   this->timingTree_->start( "pre-communication" );
    if ( this->storage_->hasGlobalCells() )
    {
       // Note that the order of communication is important, since the face -> cell communication may overwrite
@@ -72,6 +75,7 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
    {
       communication::syncFunctionBetweenPrimitives( src, level, communication::syncDirection_t::LOW2HIGH );
    }
+   this->timingTree_->stop( "pre-communication" );
 
    if ( updateType == Replace )
    {
@@ -79,7 +83,7 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
       // However, we must not zero out anything that is not flagged with the specified BCs.
       // Therefore, we first zero out everything that flagged, and then, later,
       // the halos of the highest dim primitives.
-      dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag );
+      dst.interpolate( walberla::numeric_cast< walberla::float64 >( 0 ), level, flag );
    }
 
    if ( storage_->hasGlobalCells() )
@@ -89,8 +93,8 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
-         real_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -101,24 +105,26 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
             if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() )
             {
                auto arrayIdx       = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_3D(
 
@@ -138,15 +144,18 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_3comp2,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
    else
    {
@@ -155,8 +164,8 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
          Face& face = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
-         real_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -167,18 +176,20 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
             if ( vertexdof::macroface::isVertexOnBoundary( level, idx ) )
             {
                auto arrayIdx       = vertexdof::macroface::index( level, idx.x(), idx.y() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_2D(
 
@@ -192,15 +203,20 @@ void P1ElementwiseDiffusion::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_2comp1,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Face, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Face, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
+
+   this->stopTiming( "apply" );
 }
 void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                                        const P1Function< idx_t >&                  src,
@@ -208,6 +224,8 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
                                        uint_t                                      level,
                                        DoFType                                     flag ) const
 {
+   this->startTiming( "toMatrix" );
+
    // We currently ignore the flag provided!
    if ( flag != All )
    {
@@ -216,6 +234,10 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
 
    if ( storage_->hasGlobalCells() )
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       for ( auto& it : storage_->getCells() )
       {
          Cell& cell = *it.second;
@@ -224,20 +246,22 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
          idx_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
          idx_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_3D(
 
@@ -258,10 +282,15 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
    else
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       for ( auto& it : storage_->getFaces() )
       {
          Face& face = *it.second;
@@ -270,14 +299,16 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
          idx_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
          idx_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_2D(
 
@@ -292,14 +323,19 @@ void P1ElementwiseDiffusion::toMatrix( const std::shared_ptr< SparseMatrixProxy
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
+   this->stopTiming( "toMatrix" );
 }
 void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues()
 {
+   this->startTiming( "computeInverseDiagonalOperatorValues" );
+
    if ( invDiag_ == nullptr )
    {
-      invDiag_ = std::make_shared< P1Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
+      invDiag_ =
+          std::make_shared< P1Function< walberla::float64 > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
    }
 
    for ( uint_t level = minLevel_; level <= maxLevel_; level++ )
@@ -308,27 +344,33 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues()
 
       if ( storage_->hasGlobalCells() )
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          for ( auto& it : storage_->getCells() )
          {
             Cell& cell = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-            const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-            const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-            const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-            const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+            walberla::float64* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+            const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+            const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+            const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+            const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_3D(
 
@@ -347,33 +389,42 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_3comp2,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Cell, Face >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
       else
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          for ( auto& it : storage_->getFaces() )
          {
             Face& face = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
+            walberla::float64* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
 
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_2D(
 
@@ -386,20 +437,25 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_2comp1,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Face, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Face, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
 
       ( *invDiag_ ).invertElementwise( level );
    }
+
+   this->stopTiming( "computeInverseDiagonalOperatorValues" );
 }
-std::shared_ptr< P1Function< real_t > > P1ElementwiseDiffusion::getInverseDiagonalValues() const
+std::shared_ptr< P1Function< walberla::float64 > > P1ElementwiseDiffusion::getInverseDiagonalValues() const
 {
    return invDiag_;
 }
diff --git a/operators/diffusion/P1ElementwiseDiffusion.hpp b/operators/diffusion/P1ElementwiseDiffusion.hpp
index 1b9a0335f081e4caa304a7261e2f9737c05fa2ef..6898fc5e70c766b70c78f80f1a455f6740cd1ece 100644
--- a/operators/diffusion/P1ElementwiseDiffusion.hpp
+++ b/operators/diffusion/P1ElementwiseDiffusion.hpp
@@ -43,17 +43,28 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-class P1ElementwiseDiffusion : public Operator< P1Function< real_t >, P1Function< real_t > >,
-                               public OperatorWithInverseDiagonal< P1Function< real_t > >
+/// Diffusion operator without coefficients.
+///
+/// Geometry map: IdentityMap
+///
+/// Weak formulation
+///
+///     u: trial function (space: Lagrange, degree: 1)
+///     v: test function  (space: Lagrange, degree: 1)
+///
+///     ∫ ∇u · ∇v
+
+class P1ElementwiseDiffusion : public Operator< P1Function< walberla::float64 >, P1Function< walberla::float64 > >,
+                               public OperatorWithInverseDiagonal< P1Function< walberla::float64 > >
 {
  public:
    P1ElementwiseDiffusion( const std::shared_ptr< PrimitiveStorage >& storage, size_t minLevel, size_t maxLevel );
 
-   void apply( const P1Function< real_t >& src,
-               const P1Function< real_t >& dst,
-               uint_t                      level,
-               DoFType                     flag,
-               UpdateType                  updateType = Replace ) const;
+   void apply( const P1Function< walberla::float64 >& src,
+               const P1Function< walberla::float64 >& dst,
+               uint_t                                 level,
+               DoFType                                flag,
+               UpdateType                             updateType = Replace ) const;
 
    void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                   const P1Function< idx_t >&                  src,
@@ -63,126 +74,126 @@ class P1ElementwiseDiffusion : public Operator< P1Function< real_t >, P1Function
 
    void computeInverseDiagonalOperatorValues();
 
-   std::shared_ptr< P1Function< real_t > > getInverseDiagonalValues() const;
+   std::shared_ptr< P1Function< walberla::float64 > > getInverseDiagonalValues() const;
 
  protected:
  private:
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Centroid rule | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     17      25       0       0      0              0                 0              0
-   void apply_macro_2D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_2D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     42      51       0       0      0              0                 0              0
-   void apply_macro_3D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_0comp2,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_1comp2,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        real_t           macro_vertex_coord_id_2comp2,
-                        real_t           macro_vertex_coord_id_3comp0,
-                        real_t           macro_vertex_coord_id_3comp1,
-                        real_t           macro_vertex_coord_id_3comp2,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_3D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_0comp2,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp2,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp2,
+                        walberla::float64           macro_vertex_coord_id_3comp0,
+                        walberla::float64           macro_vertex_coord_id_3comp1,
+                        walberla::float64           macro_vertex_coord_id_3comp2,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Centroid rule | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///      8      19       0       0      0              0                 0              3
    void toMatrix_macro_2D( idx_t* RESTRICT                      _data_dst,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     26      41       0       0      0              0                 0              3
    void toMatrix_macro_3D( idx_t* RESTRICT                      _data_dst,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_0comp2,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_1comp2,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
-                           real_t                               macro_vertex_coord_id_2comp2,
-                           real_t                               macro_vertex_coord_id_3comp0,
-                           real_t                               macro_vertex_coord_id_3comp1,
-                           real_t                               macro_vertex_coord_id_3comp2,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp2,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp2,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp2,
+                           walberla::float64                    macro_vertex_coord_id_3comp0,
+                           walberla::float64                    macro_vertex_coord_id_3comp1,
+                           walberla::float64                    macro_vertex_coord_id_3comp2,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Centroid rule | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///      8      10       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_2D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
+   void computeInverseDiagonalOperatorValues_macro_2D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 1, degree: 1
+   /// - quadrature rule: Keast 0 | points: 1, degree: 1
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     18      17       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_0comp2,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_1comp2,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       real_t           macro_vertex_coord_id_2comp2,
-                                                       real_t           macro_vertex_coord_id_3comp0,
-                                                       real_t           macro_vertex_coord_id_3comp1,
-                                                       real_t           macro_vertex_coord_id_3comp2,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
-
-   std::shared_ptr< P1Function< real_t > > invDiag_;
+   void computeInverseDiagonalOperatorValues_macro_3D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_0comp2,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp2,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp2,
+                                                       walberla::float64           macro_vertex_coord_id_3comp0,
+                                                       walberla::float64           macro_vertex_coord_id_3comp1,
+                                                       walberla::float64           macro_vertex_coord_id_3comp2,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
+
+   std::shared_ptr< P1Function< walberla::float64 > > invDiag_;
 };
 
 } // namespace operatorgeneration
diff --git a/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_2D.cpp b/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_2D.cpp
index 709e54d834feaaa472e3493019760ce029605927..09a50fa22a7775c2aa5f76e37cc1e21fcbdabec0 100644
--- a/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_2D.cpp
+++ b/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_2D.cpp
@@ -56,66 +56,61 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t Dummy_719 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_720 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_721 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t tmp_4 = Dummy_719*jac_affine_inv_0_0_GRAY + Dummy_720*jac_affine_inv_0_1_GRAY;
-       const real_t tmp_6 = Dummy_719*jac_affine_inv_1_0_GRAY + Dummy_720*jac_affine_inv_1_1_GRAY;
-       const real_t tmp_8 = jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_725 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_726 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_727 = abs_det_jac_affine_BLUE*0.50000000000000089;
-       const real_t Dummy_728 = Dummy_725*jac_affine_inv_0_0_BLUE + Dummy_726*jac_affine_inv_0_1_BLUE;
-       const real_t Dummy_729 = Dummy_725*jac_affine_inv_1_0_BLUE + Dummy_726*jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_731 = jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_735 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_736 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_737 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t Dummy_738 = Dummy_735*jac_affine_inv_0_0_GRAY + Dummy_736*jac_affine_inv_0_1_GRAY;
-       const real_t Dummy_739 = Dummy_735*jac_affine_inv_1_0_GRAY + Dummy_736*jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_kernel_op_2 = abs_det_jac_affine_GRAY*0.5;
+       const walberla::float64 tmp_kernel_op_4 = jac_affine_inv_0_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_0_1_GRAY*tmp_kernel_op_1;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_inv_1_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_1_1_GRAY*tmp_kernel_op_1;
+       const walberla::float64 tmp_kernel_op_8 = jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY;
+       const walberla::float64 Dummy_719 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_720 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 Dummy_721 = abs_det_jac_affine_BLUE*0.5;
+       const walberla::float64 Dummy_723 = Dummy_719*jac_affine_inv_0_0_BLUE + Dummy_720*jac_affine_inv_0_1_BLUE;
+       const walberla::float64 Dummy_725 = Dummy_719*jac_affine_inv_1_0_BLUE + Dummy_720*jac_affine_inv_1_1_BLUE;
+       const walberla::float64 Dummy_727 = jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE;
        for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
        {
           {
@@ -124,12 +119,12 @@ void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_
                 const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]);
                 const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]);
                 const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]);
-                const __m256d tmp_3 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
-                const __m256d tmp_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
-                const __m256d tmp_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_719,Dummy_719,Dummy_719,Dummy_719),_mm256_set_pd(Dummy_719,Dummy_719,Dummy_719,Dummy_719)),_mm256_mul_pd(_mm256_set_pd(Dummy_720,Dummy_720,Dummy_720,Dummy_720),_mm256_set_pd(Dummy_720,Dummy_720,Dummy_720,Dummy_720)))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_6,tmp_6,tmp_6,tmp_6)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))),_mm256_mul_pd(tmp_3,_mm256_set_pd(tmp_4,tmp_4,tmp_4,tmp_4))),_mm256_mul_pd(tmp_7,_mm256_set_pd(tmp_8,tmp_8,tmp_8,tmp_8)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_7,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))),_mm256_mul_pd(tmp_3,_mm256_set_pd(tmp_6,tmp_6,tmp_6,tmp_6))),_mm256_mul_pd(tmp_5,_mm256_set_pd(tmp_8,tmp_8,tmp_8,tmp_8)));
+                const __m256d tmp_kernel_op_3 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2));
+                const __m256d tmp_kernel_op_5 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2));
+                const __m256d tmp_kernel_op_7 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0),_mm256_set_pd(tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0)),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1),_mm256_set_pd(tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1)))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_5,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))),_mm256_mul_pd(tmp_kernel_op_3,_mm256_set_pd(tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4,tmp_kernel_op_4))),_mm256_mul_pd(tmp_kernel_op_7,_mm256_set_pd(tmp_kernel_op_8,tmp_kernel_op_8,tmp_kernel_op_8,tmp_kernel_op_8)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_7,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))),_mm256_mul_pd(tmp_kernel_op_3,_mm256_set_pd(tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6,tmp_kernel_op_6))),_mm256_mul_pd(tmp_kernel_op_5,_mm256_set_pd(tmp_kernel_op_8,tmp_kernel_op_8,tmp_kernel_op_8,tmp_kernel_op_8)));
                 {
                    {
                       _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))])));
@@ -137,34 +132,34 @@ void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_
                       _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])));
                    }
                 }
-                const __m256d Dummy_722 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]);
-                const __m256d Dummy_723 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]);
-                const __m256d Dummy_724 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]);
-                const __m256d tmp_3_BLUE = _mm256_mul_pd(Dummy_722,_mm256_set_pd(Dummy_727,Dummy_727,Dummy_727,Dummy_727));
-                const __m256d tmp_5_BLUE = _mm256_mul_pd(Dummy_723,_mm256_set_pd(Dummy_727,Dummy_727,Dummy_727,Dummy_727));
-                const __m256d Dummy_730 = _mm256_mul_pd(Dummy_724,_mm256_set_pd(Dummy_727,Dummy_727,Dummy_727,Dummy_727));
-                const __m256d Dummy_732 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_3_BLUE,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_725,Dummy_725,Dummy_725,Dummy_725),_mm256_set_pd(Dummy_725,Dummy_725,Dummy_725,Dummy_725)),_mm256_mul_pd(_mm256_set_pd(Dummy_726,Dummy_726,Dummy_726,Dummy_726),_mm256_set_pd(Dummy_726,Dummy_726,Dummy_726,Dummy_726)))),_mm256_mul_pd(tmp_5_BLUE,_mm256_set_pd(Dummy_728,Dummy_728,Dummy_728,Dummy_728))),_mm256_mul_pd(Dummy_730,_mm256_set_pd(Dummy_729,Dummy_729,Dummy_729,Dummy_729)));
-                const __m256d Dummy_733 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_5_BLUE,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))),_mm256_mul_pd(tmp_3_BLUE,_mm256_set_pd(Dummy_728,Dummy_728,Dummy_728,Dummy_728))),_mm256_mul_pd(Dummy_730,_mm256_set_pd(Dummy_731,Dummy_731,Dummy_731,Dummy_731)));
-                const __m256d Dummy_734 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_730,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))),_mm256_mul_pd(tmp_3_BLUE,_mm256_set_pd(Dummy_729,Dummy_729,Dummy_729,Dummy_729))),_mm256_mul_pd(tmp_5_BLUE,_mm256_set_pd(Dummy_731,Dummy_731,Dummy_731,Dummy_731)));
+                const __m256d Dummy_716 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]);
+                const __m256d Dummy_717 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]);
+                const __m256d Dummy_718 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]);
+                const __m256d Dummy_722 = _mm256_mul_pd(Dummy_716,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
+                const __m256d Dummy_724 = _mm256_mul_pd(Dummy_717,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
+                const __m256d Dummy_726 = _mm256_mul_pd(Dummy_718,_mm256_set_pd(Dummy_721,Dummy_721,Dummy_721,Dummy_721));
+                const __m256d Dummy_728 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_722,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_719,Dummy_719,Dummy_719,Dummy_719),_mm256_set_pd(Dummy_719,Dummy_719,Dummy_719,Dummy_719)),_mm256_mul_pd(_mm256_set_pd(Dummy_720,Dummy_720,Dummy_720,Dummy_720),_mm256_set_pd(Dummy_720,Dummy_720,Dummy_720,Dummy_720)))),_mm256_mul_pd(Dummy_724,_mm256_set_pd(Dummy_723,Dummy_723,Dummy_723,Dummy_723))),_mm256_mul_pd(Dummy_726,_mm256_set_pd(Dummy_725,Dummy_725,Dummy_725,Dummy_725)));
+                const __m256d Dummy_729 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_724,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))),_mm256_mul_pd(Dummy_722,_mm256_set_pd(Dummy_723,Dummy_723,Dummy_723,Dummy_723))),_mm256_mul_pd(Dummy_726,_mm256_set_pd(Dummy_727,Dummy_727,Dummy_727,Dummy_727)));
+                const __m256d Dummy_730 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_726,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))),_mm256_mul_pd(Dummy_722,_mm256_set_pd(Dummy_725,Dummy_725,Dummy_725,Dummy_725))),_mm256_mul_pd(Dummy_724,_mm256_set_pd(Dummy_727,Dummy_727,Dummy_727,Dummy_727)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(Dummy_732,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(Dummy_733,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(Dummy_734,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(Dummy_728,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(Dummy_729,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(Dummy_730,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])));
                    }
                 }
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t tmp_3 = Dummy_721*src_dof_0;
-                const real_t tmp_5 = Dummy_721*src_dof_1;
-                const real_t tmp_7 = Dummy_721*src_dof_2;
-                const real_t elMatVec_0 = tmp_3*((Dummy_719*Dummy_719) + (Dummy_720*Dummy_720)) + tmp_4*tmp_5 + tmp_6*tmp_7;
-                const real_t elMatVec_1 = tmp_3*tmp_4 + tmp_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_7*tmp_8;
-                const real_t elMatVec_2 = tmp_3*tmp_6 + tmp_5*tmp_8 + tmp_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 tmp_kernel_op_3 = src_dof_0*tmp_kernel_op_2;
+                const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_2;
+                const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_2;
+                const walberla::float64 elMatVec_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1)) + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_7;
+                const walberla::float64 elMatVec_1 = tmp_kernel_op_3*tmp_kernel_op_4 + tmp_kernel_op_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_kernel_op_7*tmp_kernel_op_8;
+                const walberla::float64 elMatVec_2 = tmp_kernel_op_3*tmp_kernel_op_6 + tmp_kernel_op_5*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                 {
                    {
                       _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
@@ -172,33 +167,33 @@ void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_
                       _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                    }
                 }
-                const real_t Dummy_722 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t Dummy_723 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t Dummy_724 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                const real_t tmp_3_BLUE = Dummy_722*Dummy_727;
-                const real_t tmp_5_BLUE = Dummy_723*Dummy_727;
-                const real_t Dummy_730 = Dummy_724*Dummy_727;
-                const real_t Dummy_732 = Dummy_728*tmp_5_BLUE + Dummy_729*Dummy_730 + tmp_3_BLUE*((Dummy_725*Dummy_725) + (Dummy_726*Dummy_726));
-                const real_t Dummy_733 = Dummy_728*tmp_3_BLUE + Dummy_730*Dummy_731 + tmp_5_BLUE*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                const real_t Dummy_734 = Dummy_729*tmp_3_BLUE + Dummy_730*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)) + Dummy_731*tmp_5_BLUE;
+                const walberla::float64 Dummy_716 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 Dummy_717 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 Dummy_718 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                const walberla::float64 Dummy_722 = Dummy_716*Dummy_721;
+                const walberla::float64 Dummy_724 = Dummy_717*Dummy_721;
+                const walberla::float64 Dummy_726 = Dummy_718*Dummy_721;
+                const walberla::float64 Dummy_728 = Dummy_722*((Dummy_719*Dummy_719) + (Dummy_720*Dummy_720)) + Dummy_723*Dummy_724 + Dummy_725*Dummy_726;
+                const walberla::float64 Dummy_729 = Dummy_722*Dummy_723 + Dummy_724*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)) + Dummy_726*Dummy_727;
+                const walberla::float64 Dummy_730 = Dummy_722*Dummy_725 + Dummy_724*Dummy_727 + Dummy_726*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                 {
                    {
-                      _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_732 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_733 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_734 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_728 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_729 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_730 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
                    }
                 }
              }
           }
-          const real_t src_dof_0 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
-          const real_t src_dof_1 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
-          const real_t src_dof_2 = _data_src[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
-          const real_t tmp_3 = Dummy_737*src_dof_0;
-          const real_t tmp_5 = Dummy_737*src_dof_1;
-          const real_t tmp_7 = Dummy_737*src_dof_2;
-          const real_t elMatVec_0 = Dummy_738*tmp_5 + Dummy_739*tmp_7 + tmp_3*((Dummy_735*Dummy_735) + (Dummy_736*Dummy_736));
-          const real_t elMatVec_1 = Dummy_738*tmp_3 + tmp_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_7*tmp_8;
-          const real_t elMatVec_2 = Dummy_739*tmp_3 + tmp_5*tmp_8 + tmp_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+          const walberla::float64 src_dof_0 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
+          const walberla::float64 src_dof_1 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
+          const walberla::float64 src_dof_2 = _data_src[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
+          const walberla::float64 tmp_kernel_op_3 = src_dof_0*tmp_kernel_op_2;
+          const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_2;
+          const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_2;
+          const walberla::float64 elMatVec_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1)) + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_7;
+          const walberla::float64 elMatVec_1 = tmp_kernel_op_3*tmp_kernel_op_4 + tmp_kernel_op_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_kernel_op_7*tmp_kernel_op_8;
+          const walberla::float64 elMatVec_2 = tmp_kernel_op_3*tmp_kernel_op_6 + tmp_kernel_op_5*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
           {
              {
                 {
diff --git a/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_3D.cpp b/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_3D.cpp
index 46e2fd753aca238bd467234ce508cb1e5b3c1004..6c636f02d9efb83bdd1c0b79c1fbae73e6dfe4a9 100644
--- a/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_3D.cpp
+++ b/operators/diffusion/avx/P1ElementwiseDiffusion_apply_macro_3D.cpp
@@ -56,352 +56,345 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t Dummy_914 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_915 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_916 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_917 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_918 = Dummy_914*jac_affine_inv_0_0_WHITE_UP + Dummy_915*jac_affine_inv_0_1_WHITE_UP + Dummy_916*jac_affine_inv_0_2_WHITE_UP;
-       const real_t Dummy_919 = Dummy_914*jac_affine_inv_1_0_WHITE_UP + Dummy_915*jac_affine_inv_1_1_WHITE_UP + Dummy_916*jac_affine_inv_1_2_WHITE_UP;
-       const real_t tmp_9 = Dummy_914*jac_affine_inv_2_0_WHITE_UP + Dummy_915*jac_affine_inv_2_1_WHITE_UP + Dummy_916*jac_affine_inv_2_2_WHITE_UP;
-       const real_t tmp_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
-       const real_t tmp_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-       const real_t tmp_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_924 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_925 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_926 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_927 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666666;
-       const real_t Dummy_928 = Dummy_924*jac_affine_inv_0_0_WHITE_DOWN + Dummy_925*jac_affine_inv_0_1_WHITE_DOWN + Dummy_926*jac_affine_inv_0_2_WHITE_DOWN;
-       const real_t Dummy_929 = Dummy_924*jac_affine_inv_1_0_WHITE_DOWN + Dummy_925*jac_affine_inv_1_1_WHITE_DOWN + Dummy_926*jac_affine_inv_1_2_WHITE_DOWN;
-       const real_t Dummy_930 = Dummy_924*jac_affine_inv_2_0_WHITE_DOWN + Dummy_925*jac_affine_inv_2_1_WHITE_DOWN + Dummy_926*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_931 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN;
-       const real_t Dummy_932 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_933 = jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_942 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_943 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_944 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_945 = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-       const real_t Dummy_946 = Dummy_942*jac_affine_inv_0_0_BLUE_UP + Dummy_943*jac_affine_inv_0_1_BLUE_UP + Dummy_944*jac_affine_inv_0_2_BLUE_UP;
-       const real_t Dummy_947 = Dummy_942*jac_affine_inv_1_0_BLUE_UP + Dummy_943*jac_affine_inv_1_1_BLUE_UP + Dummy_944*jac_affine_inv_1_2_BLUE_UP;
-       const real_t Dummy_948 = Dummy_942*jac_affine_inv_2_0_BLUE_UP + Dummy_943*jac_affine_inv_2_1_BLUE_UP + Dummy_944*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_949 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
-       const real_t Dummy_950 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_951 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_960 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_961 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_962 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_963 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-       const real_t Dummy_964 = Dummy_960*jac_affine_inv_0_0_BLUE_DOWN + Dummy_961*jac_affine_inv_0_1_BLUE_DOWN + Dummy_962*jac_affine_inv_0_2_BLUE_DOWN;
-       const real_t Dummy_965 = Dummy_960*jac_affine_inv_1_0_BLUE_DOWN + Dummy_961*jac_affine_inv_1_1_BLUE_DOWN + Dummy_962*jac_affine_inv_1_2_BLUE_DOWN;
-       const real_t Dummy_966 = Dummy_960*jac_affine_inv_2_0_BLUE_DOWN + Dummy_961*jac_affine_inv_2_1_BLUE_DOWN + Dummy_962*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_967 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
-       const real_t Dummy_968 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_969 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_978 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_979 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_980 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_981 = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-       const real_t Dummy_982 = Dummy_978*jac_affine_inv_0_0_GREEN_UP + Dummy_979*jac_affine_inv_0_1_GREEN_UP + Dummy_980*jac_affine_inv_0_2_GREEN_UP;
-       const real_t Dummy_983 = Dummy_978*jac_affine_inv_1_0_GREEN_UP + Dummy_979*jac_affine_inv_1_1_GREEN_UP + Dummy_980*jac_affine_inv_1_2_GREEN_UP;
-       const real_t Dummy_984 = Dummy_978*jac_affine_inv_2_0_GREEN_UP + Dummy_979*jac_affine_inv_2_1_GREEN_UP + Dummy_980*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_985 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
-       const real_t Dummy_986 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_987 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_996 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_997 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_998 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_999 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-       const real_t Dummy_1000 = Dummy_996*jac_affine_inv_0_0_GREEN_DOWN + Dummy_997*jac_affine_inv_0_1_GREEN_DOWN + Dummy_998*jac_affine_inv_0_2_GREEN_DOWN;
-       const real_t Dummy_1001 = Dummy_996*jac_affine_inv_1_0_GREEN_DOWN + Dummy_997*jac_affine_inv_1_1_GREEN_DOWN + Dummy_998*jac_affine_inv_1_2_GREEN_DOWN;
-       const real_t Dummy_1002 = Dummy_996*jac_affine_inv_2_0_GREEN_DOWN + Dummy_997*jac_affine_inv_2_1_GREEN_DOWN + Dummy_998*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1003 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
-       const real_t Dummy_1004 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1005 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1042 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_1043 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_1044 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_1045 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1046 = Dummy_1042*jac_affine_inv_0_0_WHITE_UP + Dummy_1043*jac_affine_inv_0_1_WHITE_UP + Dummy_1044*jac_affine_inv_0_2_WHITE_UP;
-       const real_t Dummy_1047 = Dummy_1042*jac_affine_inv_1_0_WHITE_UP + Dummy_1043*jac_affine_inv_1_1_WHITE_UP + Dummy_1044*jac_affine_inv_1_2_WHITE_UP;
-       const real_t Dummy_1048 = Dummy_1042*jac_affine_inv_2_0_WHITE_UP + Dummy_1043*jac_affine_inv_2_1_WHITE_UP + Dummy_1044*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_5 = jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_7 = jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 Dummy_909 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_910 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_911 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_912 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_914 = Dummy_909*jac_affine_inv_0_0_WHITE_DOWN + Dummy_910*jac_affine_inv_0_1_WHITE_DOWN + Dummy_911*jac_affine_inv_0_2_WHITE_DOWN;
+       const walberla::float64 Dummy_916 = Dummy_909*jac_affine_inv_1_0_WHITE_DOWN + Dummy_910*jac_affine_inv_1_1_WHITE_DOWN + Dummy_911*jac_affine_inv_1_2_WHITE_DOWN;
+       const walberla::float64 Dummy_918 = Dummy_909*jac_affine_inv_2_0_WHITE_DOWN + Dummy_910*jac_affine_inv_2_1_WHITE_DOWN + Dummy_911*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_920 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN;
+       const walberla::float64 Dummy_921 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_922 = jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_931 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_932 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_933 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_934 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+       const walberla::float64 Dummy_936 = Dummy_931*jac_affine_inv_0_0_BLUE_UP + Dummy_932*jac_affine_inv_0_1_BLUE_UP + Dummy_933*jac_affine_inv_0_2_BLUE_UP;
+       const walberla::float64 Dummy_938 = Dummy_931*jac_affine_inv_1_0_BLUE_UP + Dummy_932*jac_affine_inv_1_1_BLUE_UP + Dummy_933*jac_affine_inv_1_2_BLUE_UP;
+       const walberla::float64 Dummy_940 = Dummy_931*jac_affine_inv_2_0_BLUE_UP + Dummy_932*jac_affine_inv_2_1_BLUE_UP + Dummy_933*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_942 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
+       const walberla::float64 Dummy_943 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_944 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_953 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_954 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_955 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_956 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_958 = Dummy_953*jac_affine_inv_0_0_BLUE_DOWN + Dummy_954*jac_affine_inv_0_1_BLUE_DOWN + Dummy_955*jac_affine_inv_0_2_BLUE_DOWN;
+       const walberla::float64 Dummy_960 = Dummy_953*jac_affine_inv_1_0_BLUE_DOWN + Dummy_954*jac_affine_inv_1_1_BLUE_DOWN + Dummy_955*jac_affine_inv_1_2_BLUE_DOWN;
+       const walberla::float64 Dummy_962 = Dummy_953*jac_affine_inv_2_0_BLUE_DOWN + Dummy_954*jac_affine_inv_2_1_BLUE_DOWN + Dummy_955*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_964 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
+       const walberla::float64 Dummy_965 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_966 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_975 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_976 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_977 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_978 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+       const walberla::float64 Dummy_980 = Dummy_975*jac_affine_inv_0_0_GREEN_UP + Dummy_976*jac_affine_inv_0_1_GREEN_UP + Dummy_977*jac_affine_inv_0_2_GREEN_UP;
+       const walberla::float64 Dummy_982 = Dummy_975*jac_affine_inv_1_0_GREEN_UP + Dummy_976*jac_affine_inv_1_1_GREEN_UP + Dummy_977*jac_affine_inv_1_2_GREEN_UP;
+       const walberla::float64 Dummy_984 = Dummy_975*jac_affine_inv_2_0_GREEN_UP + Dummy_976*jac_affine_inv_2_1_GREEN_UP + Dummy_977*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_986 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
+       const walberla::float64 Dummy_987 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_988 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_997 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_998 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_999 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1000 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1002 = Dummy_997*jac_affine_inv_0_0_GREEN_DOWN + Dummy_998*jac_affine_inv_0_1_GREEN_DOWN + Dummy_999*jac_affine_inv_0_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1004 = Dummy_997*jac_affine_inv_1_0_GREEN_DOWN + Dummy_998*jac_affine_inv_1_1_GREEN_DOWN + Dummy_999*jac_affine_inv_1_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1006 = Dummy_997*jac_affine_inv_2_0_GREEN_DOWN + Dummy_998*jac_affine_inv_2_1_GREEN_DOWN + Dummy_999*jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1008 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1009 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1010 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
        for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
        for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
        {
@@ -412,14 +405,14 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                 const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
                 const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
                 const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d tmp_4_WHITE_UP = _mm256_mul_pd(src_dof_0,_mm256_set_pd(Dummy_917,Dummy_917,Dummy_917,Dummy_917));
-                const __m256d tmp_6_WHITE_UP = _mm256_mul_pd(src_dof_1,_mm256_set_pd(Dummy_917,Dummy_917,Dummy_917,Dummy_917));
-                const __m256d tmp_8 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(Dummy_917,Dummy_917,Dummy_917,Dummy_917));
-                const __m256d tmp_10 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(Dummy_917,Dummy_917,Dummy_917,Dummy_917));
-                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_WHITE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_914,Dummy_914,Dummy_914,Dummy_914),_mm256_set_pd(Dummy_914,Dummy_914,Dummy_914,Dummy_914)),_mm256_mul_pd(_mm256_set_pd(Dummy_915,Dummy_915,Dummy_915,Dummy_915),_mm256_set_pd(Dummy_915,Dummy_915,Dummy_915,Dummy_915))),_mm256_mul_pd(_mm256_set_pd(Dummy_916,Dummy_916,Dummy_916,Dummy_916),_mm256_set_pd(Dummy_916,Dummy_916,Dummy_916,Dummy_916)))),_mm256_mul_pd(tmp_6_WHITE_UP,_mm256_set_pd(Dummy_918,Dummy_918,Dummy_918,Dummy_918))),_mm256_mul_pd(tmp_8,_mm256_set_pd(Dummy_919,Dummy_919,Dummy_919,Dummy_919))),_mm256_mul_pd(tmp_10,_mm256_set_pd(tmp_9,tmp_9,tmp_9,tmp_9)));
-                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_WHITE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_mul_pd(tmp_4_WHITE_UP,_mm256_set_pd(Dummy_918,Dummy_918,Dummy_918,Dummy_918))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_11,tmp_11,tmp_11,tmp_11))),_mm256_mul_pd(tmp_10,_mm256_set_pd(tmp_12,tmp_12,tmp_12,tmp_12)));
-                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_mul_pd(tmp_4_WHITE_UP,_mm256_set_pd(Dummy_919,Dummy_919,Dummy_919,Dummy_919))),_mm256_mul_pd(tmp_6_WHITE_UP,_mm256_set_pd(tmp_11,tmp_11,tmp_11,tmp_11))),_mm256_mul_pd(tmp_10,_mm256_set_pd(tmp_13,tmp_13,tmp_13,tmp_13)));
-                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_mul_pd(tmp_6_WHITE_UP,_mm256_set_pd(tmp_12,tmp_12,tmp_12,tmp_12))),_mm256_mul_pd(tmp_8,_mm256_set_pd(tmp_13,tmp_13,tmp_13,tmp_13))),_mm256_mul_pd(tmp_4_WHITE_UP,_mm256_set_pd(tmp_9,tmp_9,tmp_9,tmp_9)));
+                const __m256d tmp_kernel_op_4 = _mm256_mul_pd(src_dof_0,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3));
+                const __m256d tmp_kernel_op_6 = _mm256_mul_pd(src_dof_1,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3));
+                const __m256d tmp_kernel_op_8 = _mm256_mul_pd(src_dof_2,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3));
+                const __m256d tmp_kernel_op_10 = _mm256_mul_pd(src_dof_3,_mm256_set_pd(tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3,tmp_kernel_op_3));
+                const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0),_mm256_set_pd(tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0,tmp_kernel_op_0)),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1),_mm256_set_pd(tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1,tmp_kernel_op_1))),_mm256_mul_pd(_mm256_set_pd(tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2),_mm256_set_pd(tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2,tmp_kernel_op_2)))),_mm256_mul_pd(tmp_kernel_op_6,_mm256_set_pd(tmp_kernel_op_5,tmp_kernel_op_5,tmp_kernel_op_5,tmp_kernel_op_5))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_7,tmp_kernel_op_7,tmp_kernel_op_7,tmp_kernel_op_7))),_mm256_mul_pd(tmp_kernel_op_10,_mm256_set_pd(tmp_kernel_op_9,tmp_kernel_op_9,tmp_kernel_op_9,tmp_kernel_op_9)));
+                const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_6,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11))),_mm256_mul_pd(tmp_kernel_op_10,_mm256_set_pd(tmp_kernel_op_12,tmp_kernel_op_12,tmp_kernel_op_12,tmp_kernel_op_12))),_mm256_mul_pd(tmp_kernel_op_4,_mm256_set_pd(tmp_kernel_op_5,tmp_kernel_op_5,tmp_kernel_op_5,tmp_kernel_op_5)));
+                const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_8,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_mul_pd(tmp_kernel_op_6,_mm256_set_pd(tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11,tmp_kernel_op_11))),_mm256_mul_pd(tmp_kernel_op_10,_mm256_set_pd(tmp_kernel_op_13,tmp_kernel_op_13,tmp_kernel_op_13,tmp_kernel_op_13))),_mm256_mul_pd(tmp_kernel_op_4,_mm256_set_pd(tmp_kernel_op_7,tmp_kernel_op_7,tmp_kernel_op_7,tmp_kernel_op_7)));
+                const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_kernel_op_10,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_mul_pd(tmp_kernel_op_6,_mm256_set_pd(tmp_kernel_op_12,tmp_kernel_op_12,tmp_kernel_op_12,tmp_kernel_op_12))),_mm256_mul_pd(tmp_kernel_op_8,_mm256_set_pd(tmp_kernel_op_13,tmp_kernel_op_13,tmp_kernel_op_13,tmp_kernel_op_13))),_mm256_mul_pd(tmp_kernel_op_4,_mm256_set_pd(tmp_kernel_op_9,tmp_kernel_op_9,tmp_kernel_op_9,tmp_kernel_op_9)));
                 {
                    {
                       _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
@@ -428,121 +421,121 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                       _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
                    }
                 }
-                const __m256d Dummy_920 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_921 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_922 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_923 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d tmp_4_WHITE_DOWN = _mm256_mul_pd(Dummy_920,_mm256_set_pd(Dummy_927,Dummy_927,Dummy_927,Dummy_927));
-                const __m256d tmp_6_WHITE_DOWN = _mm256_mul_pd(Dummy_921,_mm256_set_pd(Dummy_927,Dummy_927,Dummy_927,Dummy_927));
-                const __m256d tmp_8_WHITE_DOWN = _mm256_mul_pd(Dummy_922,_mm256_set_pd(Dummy_927,Dummy_927,Dummy_927,Dummy_927));
-                const __m256d tmp_10_WHITE_DOWN = _mm256_mul_pd(Dummy_923,_mm256_set_pd(Dummy_927,Dummy_927,Dummy_927,Dummy_927));
-                const __m256d Dummy_934 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_924,Dummy_924,Dummy_924,Dummy_924),_mm256_set_pd(Dummy_924,Dummy_924,Dummy_924,Dummy_924)),_mm256_mul_pd(_mm256_set_pd(Dummy_925,Dummy_925,Dummy_925,Dummy_925),_mm256_set_pd(Dummy_925,Dummy_925,Dummy_925,Dummy_925))),_mm256_mul_pd(_mm256_set_pd(Dummy_926,Dummy_926,Dummy_926,Dummy_926),_mm256_set_pd(Dummy_926,Dummy_926,Dummy_926,Dummy_926)))),_mm256_mul_pd(tmp_6_WHITE_DOWN,_mm256_set_pd(Dummy_928,Dummy_928,Dummy_928,Dummy_928))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_929,Dummy_929,Dummy_929,Dummy_929))),_mm256_mul_pd(tmp_10_WHITE_DOWN,_mm256_set_pd(Dummy_930,Dummy_930,Dummy_930,Dummy_930)));
-                const __m256d Dummy_935 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_mul_pd(tmp_4_WHITE_DOWN,_mm256_set_pd(Dummy_928,Dummy_928,Dummy_928,Dummy_928))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_931,Dummy_931,Dummy_931,Dummy_931))),_mm256_mul_pd(tmp_10_WHITE_DOWN,_mm256_set_pd(Dummy_932,Dummy_932,Dummy_932,Dummy_932)));
-                const __m256d Dummy_936 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_mul_pd(tmp_4_WHITE_DOWN,_mm256_set_pd(Dummy_929,Dummy_929,Dummy_929,Dummy_929))),_mm256_mul_pd(tmp_6_WHITE_DOWN,_mm256_set_pd(Dummy_931,Dummy_931,Dummy_931,Dummy_931))),_mm256_mul_pd(tmp_10_WHITE_DOWN,_mm256_set_pd(Dummy_933,Dummy_933,Dummy_933,Dummy_933)));
-                const __m256d Dummy_937 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10_WHITE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_mul_pd(tmp_4_WHITE_DOWN,_mm256_set_pd(Dummy_930,Dummy_930,Dummy_930,Dummy_930))),_mm256_mul_pd(tmp_6_WHITE_DOWN,_mm256_set_pd(Dummy_932,Dummy_932,Dummy_932,Dummy_932))),_mm256_mul_pd(tmp_8_WHITE_DOWN,_mm256_set_pd(Dummy_933,Dummy_933,Dummy_933,Dummy_933)));
+                const __m256d Dummy_905 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_906 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_907 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_908 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_913 = _mm256_mul_pd(Dummy_905,_mm256_set_pd(Dummy_912,Dummy_912,Dummy_912,Dummy_912));
+                const __m256d Dummy_915 = _mm256_mul_pd(Dummy_906,_mm256_set_pd(Dummy_912,Dummy_912,Dummy_912,Dummy_912));
+                const __m256d Dummy_917 = _mm256_mul_pd(Dummy_907,_mm256_set_pd(Dummy_912,Dummy_912,Dummy_912,Dummy_912));
+                const __m256d Dummy_919 = _mm256_mul_pd(Dummy_908,_mm256_set_pd(Dummy_912,Dummy_912,Dummy_912,Dummy_912));
+                const __m256d Dummy_923 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_913,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_909,Dummy_909,Dummy_909,Dummy_909),_mm256_set_pd(Dummy_909,Dummy_909,Dummy_909,Dummy_909)),_mm256_mul_pd(_mm256_set_pd(Dummy_910,Dummy_910,Dummy_910,Dummy_910),_mm256_set_pd(Dummy_910,Dummy_910,Dummy_910,Dummy_910))),_mm256_mul_pd(_mm256_set_pd(Dummy_911,Dummy_911,Dummy_911,Dummy_911),_mm256_set_pd(Dummy_911,Dummy_911,Dummy_911,Dummy_911)))),_mm256_mul_pd(Dummy_915,_mm256_set_pd(Dummy_914,Dummy_914,Dummy_914,Dummy_914))),_mm256_mul_pd(Dummy_917,_mm256_set_pd(Dummy_916,Dummy_916,Dummy_916,Dummy_916))),_mm256_mul_pd(Dummy_919,_mm256_set_pd(Dummy_918,Dummy_918,Dummy_918,Dummy_918)));
+                const __m256d Dummy_924 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_915,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_mul_pd(Dummy_913,_mm256_set_pd(Dummy_914,Dummy_914,Dummy_914,Dummy_914))),_mm256_mul_pd(Dummy_917,_mm256_set_pd(Dummy_920,Dummy_920,Dummy_920,Dummy_920))),_mm256_mul_pd(Dummy_919,_mm256_set_pd(Dummy_921,Dummy_921,Dummy_921,Dummy_921)));
+                const __m256d Dummy_925 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_917,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_mul_pd(Dummy_913,_mm256_set_pd(Dummy_916,Dummy_916,Dummy_916,Dummy_916))),_mm256_mul_pd(Dummy_915,_mm256_set_pd(Dummy_920,Dummy_920,Dummy_920,Dummy_920))),_mm256_mul_pd(Dummy_919,_mm256_set_pd(Dummy_922,Dummy_922,Dummy_922,Dummy_922)));
+                const __m256d Dummy_926 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_919,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_mul_pd(Dummy_913,_mm256_set_pd(Dummy_918,Dummy_918,Dummy_918,Dummy_918))),_mm256_mul_pd(Dummy_915,_mm256_set_pd(Dummy_921,Dummy_921,Dummy_921,Dummy_921))),_mm256_mul_pd(Dummy_917,_mm256_set_pd(Dummy_922,Dummy_922,Dummy_922,Dummy_922)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_934,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_935,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_936,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_937,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_923,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_924,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_925,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_926,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
-                const __m256d Dummy_938 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_939 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_940 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_941 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d tmp_4_BLUE_UP = _mm256_mul_pd(Dummy_938,_mm256_set_pd(Dummy_945,Dummy_945,Dummy_945,Dummy_945));
-                const __m256d tmp_6_BLUE_UP = _mm256_mul_pd(Dummy_939,_mm256_set_pd(Dummy_945,Dummy_945,Dummy_945,Dummy_945));
-                const __m256d tmp_8_BLUE_UP = _mm256_mul_pd(Dummy_940,_mm256_set_pd(Dummy_945,Dummy_945,Dummy_945,Dummy_945));
-                const __m256d tmp_10_BLUE_UP = _mm256_mul_pd(Dummy_941,_mm256_set_pd(Dummy_945,Dummy_945,Dummy_945,Dummy_945));
-                const __m256d Dummy_952 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_BLUE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_942,Dummy_942,Dummy_942,Dummy_942),_mm256_set_pd(Dummy_942,Dummy_942,Dummy_942,Dummy_942)),_mm256_mul_pd(_mm256_set_pd(Dummy_943,Dummy_943,Dummy_943,Dummy_943),_mm256_set_pd(Dummy_943,Dummy_943,Dummy_943,Dummy_943))),_mm256_mul_pd(_mm256_set_pd(Dummy_944,Dummy_944,Dummy_944,Dummy_944),_mm256_set_pd(Dummy_944,Dummy_944,Dummy_944,Dummy_944)))),_mm256_mul_pd(tmp_6_BLUE_UP,_mm256_set_pd(Dummy_946,Dummy_946,Dummy_946,Dummy_946))),_mm256_mul_pd(tmp_8_BLUE_UP,_mm256_set_pd(Dummy_947,Dummy_947,Dummy_947,Dummy_947))),_mm256_mul_pd(tmp_10_BLUE_UP,_mm256_set_pd(Dummy_948,Dummy_948,Dummy_948,Dummy_948)));
-                const __m256d Dummy_953 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_BLUE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_mul_pd(tmp_4_BLUE_UP,_mm256_set_pd(Dummy_946,Dummy_946,Dummy_946,Dummy_946))),_mm256_mul_pd(tmp_8_BLUE_UP,_mm256_set_pd(Dummy_949,Dummy_949,Dummy_949,Dummy_949))),_mm256_mul_pd(tmp_10_BLUE_UP,_mm256_set_pd(Dummy_950,Dummy_950,Dummy_950,Dummy_950)));
-                const __m256d Dummy_954 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_BLUE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_mul_pd(tmp_4_BLUE_UP,_mm256_set_pd(Dummy_947,Dummy_947,Dummy_947,Dummy_947))),_mm256_mul_pd(tmp_6_BLUE_UP,_mm256_set_pd(Dummy_949,Dummy_949,Dummy_949,Dummy_949))),_mm256_mul_pd(tmp_10_BLUE_UP,_mm256_set_pd(Dummy_951,Dummy_951,Dummy_951,Dummy_951)));
-                const __m256d Dummy_955 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10_BLUE_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_mul_pd(tmp_4_BLUE_UP,_mm256_set_pd(Dummy_948,Dummy_948,Dummy_948,Dummy_948))),_mm256_mul_pd(tmp_6_BLUE_UP,_mm256_set_pd(Dummy_950,Dummy_950,Dummy_950,Dummy_950))),_mm256_mul_pd(tmp_8_BLUE_UP,_mm256_set_pd(Dummy_951,Dummy_951,Dummy_951,Dummy_951)));
+                const __m256d Dummy_927 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_928 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_929 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_930 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_935 = _mm256_mul_pd(Dummy_927,_mm256_set_pd(Dummy_934,Dummy_934,Dummy_934,Dummy_934));
+                const __m256d Dummy_937 = _mm256_mul_pd(Dummy_928,_mm256_set_pd(Dummy_934,Dummy_934,Dummy_934,Dummy_934));
+                const __m256d Dummy_939 = _mm256_mul_pd(Dummy_929,_mm256_set_pd(Dummy_934,Dummy_934,Dummy_934,Dummy_934));
+                const __m256d Dummy_941 = _mm256_mul_pd(Dummy_930,_mm256_set_pd(Dummy_934,Dummy_934,Dummy_934,Dummy_934));
+                const __m256d Dummy_945 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_935,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_931,Dummy_931,Dummy_931,Dummy_931),_mm256_set_pd(Dummy_931,Dummy_931,Dummy_931,Dummy_931)),_mm256_mul_pd(_mm256_set_pd(Dummy_932,Dummy_932,Dummy_932,Dummy_932),_mm256_set_pd(Dummy_932,Dummy_932,Dummy_932,Dummy_932))),_mm256_mul_pd(_mm256_set_pd(Dummy_933,Dummy_933,Dummy_933,Dummy_933),_mm256_set_pd(Dummy_933,Dummy_933,Dummy_933,Dummy_933)))),_mm256_mul_pd(Dummy_937,_mm256_set_pd(Dummy_936,Dummy_936,Dummy_936,Dummy_936))),_mm256_mul_pd(Dummy_939,_mm256_set_pd(Dummy_938,Dummy_938,Dummy_938,Dummy_938))),_mm256_mul_pd(Dummy_941,_mm256_set_pd(Dummy_940,Dummy_940,Dummy_940,Dummy_940)));
+                const __m256d Dummy_946 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_937,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_mul_pd(Dummy_935,_mm256_set_pd(Dummy_936,Dummy_936,Dummy_936,Dummy_936))),_mm256_mul_pd(Dummy_939,_mm256_set_pd(Dummy_942,Dummy_942,Dummy_942,Dummy_942))),_mm256_mul_pd(Dummy_941,_mm256_set_pd(Dummy_943,Dummy_943,Dummy_943,Dummy_943)));
+                const __m256d Dummy_947 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_939,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_mul_pd(Dummy_935,_mm256_set_pd(Dummy_938,Dummy_938,Dummy_938,Dummy_938))),_mm256_mul_pd(Dummy_937,_mm256_set_pd(Dummy_942,Dummy_942,Dummy_942,Dummy_942))),_mm256_mul_pd(Dummy_941,_mm256_set_pd(Dummy_944,Dummy_944,Dummy_944,Dummy_944)));
+                const __m256d Dummy_948 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_941,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_mul_pd(Dummy_935,_mm256_set_pd(Dummy_940,Dummy_940,Dummy_940,Dummy_940))),_mm256_mul_pd(Dummy_937,_mm256_set_pd(Dummy_943,Dummy_943,Dummy_943,Dummy_943))),_mm256_mul_pd(Dummy_939,_mm256_set_pd(Dummy_944,Dummy_944,Dummy_944,Dummy_944)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_952,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_953,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_954,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_955,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_945,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_946,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_947,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_948,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
-                const __m256d Dummy_956 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_957 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_958 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_959 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d tmp_4_BLUE_DOWN = _mm256_mul_pd(Dummy_956,_mm256_set_pd(Dummy_963,Dummy_963,Dummy_963,Dummy_963));
-                const __m256d tmp_6_BLUE_DOWN = _mm256_mul_pd(Dummy_957,_mm256_set_pd(Dummy_963,Dummy_963,Dummy_963,Dummy_963));
-                const __m256d tmp_8_BLUE_DOWN = _mm256_mul_pd(Dummy_958,_mm256_set_pd(Dummy_963,Dummy_963,Dummy_963,Dummy_963));
-                const __m256d tmp_10_BLUE_DOWN = _mm256_mul_pd(Dummy_959,_mm256_set_pd(Dummy_963,Dummy_963,Dummy_963,Dummy_963));
-                const __m256d Dummy_970 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_960,Dummy_960,Dummy_960,Dummy_960),_mm256_set_pd(Dummy_960,Dummy_960,Dummy_960,Dummy_960)),_mm256_mul_pd(_mm256_set_pd(Dummy_961,Dummy_961,Dummy_961,Dummy_961),_mm256_set_pd(Dummy_961,Dummy_961,Dummy_961,Dummy_961))),_mm256_mul_pd(_mm256_set_pd(Dummy_962,Dummy_962,Dummy_962,Dummy_962),_mm256_set_pd(Dummy_962,Dummy_962,Dummy_962,Dummy_962)))),_mm256_mul_pd(tmp_6_BLUE_DOWN,_mm256_set_pd(Dummy_964,Dummy_964,Dummy_964,Dummy_964))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_965,Dummy_965,Dummy_965,Dummy_965))),_mm256_mul_pd(tmp_10_BLUE_DOWN,_mm256_set_pd(Dummy_966,Dummy_966,Dummy_966,Dummy_966)));
-                const __m256d Dummy_971 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_mul_pd(tmp_4_BLUE_DOWN,_mm256_set_pd(Dummy_964,Dummy_964,Dummy_964,Dummy_964))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_967,Dummy_967,Dummy_967,Dummy_967))),_mm256_mul_pd(tmp_10_BLUE_DOWN,_mm256_set_pd(Dummy_968,Dummy_968,Dummy_968,Dummy_968)));
-                const __m256d Dummy_972 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_mul_pd(tmp_4_BLUE_DOWN,_mm256_set_pd(Dummy_965,Dummy_965,Dummy_965,Dummy_965))),_mm256_mul_pd(tmp_6_BLUE_DOWN,_mm256_set_pd(Dummy_967,Dummy_967,Dummy_967,Dummy_967))),_mm256_mul_pd(tmp_10_BLUE_DOWN,_mm256_set_pd(Dummy_969,Dummy_969,Dummy_969,Dummy_969)));
-                const __m256d Dummy_973 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10_BLUE_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_mul_pd(tmp_4_BLUE_DOWN,_mm256_set_pd(Dummy_966,Dummy_966,Dummy_966,Dummy_966))),_mm256_mul_pd(tmp_6_BLUE_DOWN,_mm256_set_pd(Dummy_968,Dummy_968,Dummy_968,Dummy_968))),_mm256_mul_pd(tmp_8_BLUE_DOWN,_mm256_set_pd(Dummy_969,Dummy_969,Dummy_969,Dummy_969)));
+                const __m256d Dummy_949 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_950 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_951 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_952 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_957 = _mm256_mul_pd(Dummy_949,_mm256_set_pd(Dummy_956,Dummy_956,Dummy_956,Dummy_956));
+                const __m256d Dummy_959 = _mm256_mul_pd(Dummy_950,_mm256_set_pd(Dummy_956,Dummy_956,Dummy_956,Dummy_956));
+                const __m256d Dummy_961 = _mm256_mul_pd(Dummy_951,_mm256_set_pd(Dummy_956,Dummy_956,Dummy_956,Dummy_956));
+                const __m256d Dummy_963 = _mm256_mul_pd(Dummy_952,_mm256_set_pd(Dummy_956,Dummy_956,Dummy_956,Dummy_956));
+                const __m256d Dummy_967 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_957,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_953,Dummy_953,Dummy_953,Dummy_953),_mm256_set_pd(Dummy_953,Dummy_953,Dummy_953,Dummy_953)),_mm256_mul_pd(_mm256_set_pd(Dummy_954,Dummy_954,Dummy_954,Dummy_954),_mm256_set_pd(Dummy_954,Dummy_954,Dummy_954,Dummy_954))),_mm256_mul_pd(_mm256_set_pd(Dummy_955,Dummy_955,Dummy_955,Dummy_955),_mm256_set_pd(Dummy_955,Dummy_955,Dummy_955,Dummy_955)))),_mm256_mul_pd(Dummy_959,_mm256_set_pd(Dummy_958,Dummy_958,Dummy_958,Dummy_958))),_mm256_mul_pd(Dummy_961,_mm256_set_pd(Dummy_960,Dummy_960,Dummy_960,Dummy_960))),_mm256_mul_pd(Dummy_963,_mm256_set_pd(Dummy_962,Dummy_962,Dummy_962,Dummy_962)));
+                const __m256d Dummy_968 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_959,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_mul_pd(Dummy_957,_mm256_set_pd(Dummy_958,Dummy_958,Dummy_958,Dummy_958))),_mm256_mul_pd(Dummy_961,_mm256_set_pd(Dummy_964,Dummy_964,Dummy_964,Dummy_964))),_mm256_mul_pd(Dummy_963,_mm256_set_pd(Dummy_965,Dummy_965,Dummy_965,Dummy_965)));
+                const __m256d Dummy_969 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_961,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_mul_pd(Dummy_957,_mm256_set_pd(Dummy_960,Dummy_960,Dummy_960,Dummy_960))),_mm256_mul_pd(Dummy_959,_mm256_set_pd(Dummy_964,Dummy_964,Dummy_964,Dummy_964))),_mm256_mul_pd(Dummy_963,_mm256_set_pd(Dummy_966,Dummy_966,Dummy_966,Dummy_966)));
+                const __m256d Dummy_970 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_963,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_mul_pd(Dummy_957,_mm256_set_pd(Dummy_962,Dummy_962,Dummy_962,Dummy_962))),_mm256_mul_pd(Dummy_959,_mm256_set_pd(Dummy_965,Dummy_965,Dummy_965,Dummy_965))),_mm256_mul_pd(Dummy_961,_mm256_set_pd(Dummy_966,Dummy_966,Dummy_966,Dummy_966)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_970,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_971,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_972,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_973,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_967,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_968,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_969,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_970,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
                    }
                 }
-                const __m256d Dummy_974 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_975 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_976 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_977 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d tmp_4_GREEN_UP = _mm256_mul_pd(Dummy_974,_mm256_set_pd(Dummy_981,Dummy_981,Dummy_981,Dummy_981));
-                const __m256d tmp_6_GREEN_UP = _mm256_mul_pd(Dummy_975,_mm256_set_pd(Dummy_981,Dummy_981,Dummy_981,Dummy_981));
-                const __m256d tmp_8_GREEN_UP = _mm256_mul_pd(Dummy_976,_mm256_set_pd(Dummy_981,Dummy_981,Dummy_981,Dummy_981));
-                const __m256d tmp_10_GREEN_UP = _mm256_mul_pd(Dummy_977,_mm256_set_pd(Dummy_981,Dummy_981,Dummy_981,Dummy_981));
-                const __m256d Dummy_988 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_GREEN_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978),_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978)),_mm256_mul_pd(_mm256_set_pd(Dummy_979,Dummy_979,Dummy_979,Dummy_979),_mm256_set_pd(Dummy_979,Dummy_979,Dummy_979,Dummy_979))),_mm256_mul_pd(_mm256_set_pd(Dummy_980,Dummy_980,Dummy_980,Dummy_980),_mm256_set_pd(Dummy_980,Dummy_980,Dummy_980,Dummy_980)))),_mm256_mul_pd(tmp_6_GREEN_UP,_mm256_set_pd(Dummy_982,Dummy_982,Dummy_982,Dummy_982))),_mm256_mul_pd(tmp_8_GREEN_UP,_mm256_set_pd(Dummy_983,Dummy_983,Dummy_983,Dummy_983))),_mm256_mul_pd(tmp_10_GREEN_UP,_mm256_set_pd(Dummy_984,Dummy_984,Dummy_984,Dummy_984)));
-                const __m256d Dummy_989 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_GREEN_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_mul_pd(tmp_4_GREEN_UP,_mm256_set_pd(Dummy_982,Dummy_982,Dummy_982,Dummy_982))),_mm256_mul_pd(tmp_8_GREEN_UP,_mm256_set_pd(Dummy_985,Dummy_985,Dummy_985,Dummy_985))),_mm256_mul_pd(tmp_10_GREEN_UP,_mm256_set_pd(Dummy_986,Dummy_986,Dummy_986,Dummy_986)));
-                const __m256d Dummy_990 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_GREEN_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_mul_pd(tmp_4_GREEN_UP,_mm256_set_pd(Dummy_983,Dummy_983,Dummy_983,Dummy_983))),_mm256_mul_pd(tmp_6_GREEN_UP,_mm256_set_pd(Dummy_985,Dummy_985,Dummy_985,Dummy_985))),_mm256_mul_pd(tmp_10_GREEN_UP,_mm256_set_pd(Dummy_987,Dummy_987,Dummy_987,Dummy_987)));
-                const __m256d Dummy_991 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10_GREEN_UP,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_mul_pd(tmp_4_GREEN_UP,_mm256_set_pd(Dummy_984,Dummy_984,Dummy_984,Dummy_984))),_mm256_mul_pd(tmp_6_GREEN_UP,_mm256_set_pd(Dummy_986,Dummy_986,Dummy_986,Dummy_986))),_mm256_mul_pd(tmp_8_GREEN_UP,_mm256_set_pd(Dummy_987,Dummy_987,Dummy_987,Dummy_987)));
+                const __m256d Dummy_971 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_972 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_973 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_974 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_979 = _mm256_mul_pd(Dummy_971,_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978));
+                const __m256d Dummy_981 = _mm256_mul_pd(Dummy_972,_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978));
+                const __m256d Dummy_983 = _mm256_mul_pd(Dummy_973,_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978));
+                const __m256d Dummy_985 = _mm256_mul_pd(Dummy_974,_mm256_set_pd(Dummy_978,Dummy_978,Dummy_978,Dummy_978));
+                const __m256d Dummy_989 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_979,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_975,Dummy_975,Dummy_975,Dummy_975),_mm256_set_pd(Dummy_975,Dummy_975,Dummy_975,Dummy_975)),_mm256_mul_pd(_mm256_set_pd(Dummy_976,Dummy_976,Dummy_976,Dummy_976),_mm256_set_pd(Dummy_976,Dummy_976,Dummy_976,Dummy_976))),_mm256_mul_pd(_mm256_set_pd(Dummy_977,Dummy_977,Dummy_977,Dummy_977),_mm256_set_pd(Dummy_977,Dummy_977,Dummy_977,Dummy_977)))),_mm256_mul_pd(Dummy_981,_mm256_set_pd(Dummy_980,Dummy_980,Dummy_980,Dummy_980))),_mm256_mul_pd(Dummy_983,_mm256_set_pd(Dummy_982,Dummy_982,Dummy_982,Dummy_982))),_mm256_mul_pd(Dummy_985,_mm256_set_pd(Dummy_984,Dummy_984,Dummy_984,Dummy_984)));
+                const __m256d Dummy_990 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_981,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_mul_pd(Dummy_979,_mm256_set_pd(Dummy_980,Dummy_980,Dummy_980,Dummy_980))),_mm256_mul_pd(Dummy_983,_mm256_set_pd(Dummy_986,Dummy_986,Dummy_986,Dummy_986))),_mm256_mul_pd(Dummy_985,_mm256_set_pd(Dummy_987,Dummy_987,Dummy_987,Dummy_987)));
+                const __m256d Dummy_991 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_983,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_mul_pd(Dummy_979,_mm256_set_pd(Dummy_982,Dummy_982,Dummy_982,Dummy_982))),_mm256_mul_pd(Dummy_981,_mm256_set_pd(Dummy_986,Dummy_986,Dummy_986,Dummy_986))),_mm256_mul_pd(Dummy_985,_mm256_set_pd(Dummy_988,Dummy_988,Dummy_988,Dummy_988)));
+                const __m256d Dummy_992 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_985,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_mul_pd(Dummy_979,_mm256_set_pd(Dummy_984,Dummy_984,Dummy_984,Dummy_984))),_mm256_mul_pd(Dummy_981,_mm256_set_pd(Dummy_987,Dummy_987,Dummy_987,Dummy_987))),_mm256_mul_pd(Dummy_983,_mm256_set_pd(Dummy_988,Dummy_988,Dummy_988,Dummy_988)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_988,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_989,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_990,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_991,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_989,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_990,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_991,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_992,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
-                const __m256d Dummy_992 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d Dummy_993 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_994 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
-                const __m256d Dummy_995 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
-                const __m256d tmp_4_GREEN_DOWN = _mm256_mul_pd(Dummy_992,_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999));
-                const __m256d tmp_6_GREEN_DOWN = _mm256_mul_pd(Dummy_993,_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999));
-                const __m256d tmp_8_GREEN_DOWN = _mm256_mul_pd(Dummy_994,_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999));
-                const __m256d tmp_10_GREEN_DOWN = _mm256_mul_pd(Dummy_995,_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999));
-                const __m256d Dummy_1006 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_4_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_996,Dummy_996,Dummy_996,Dummy_996),_mm256_set_pd(Dummy_996,Dummy_996,Dummy_996,Dummy_996)),_mm256_mul_pd(_mm256_set_pd(Dummy_997,Dummy_997,Dummy_997,Dummy_997),_mm256_set_pd(Dummy_997,Dummy_997,Dummy_997,Dummy_997))),_mm256_mul_pd(_mm256_set_pd(Dummy_998,Dummy_998,Dummy_998,Dummy_998),_mm256_set_pd(Dummy_998,Dummy_998,Dummy_998,Dummy_998)))),_mm256_mul_pd(tmp_6_GREEN_DOWN,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_1001,Dummy_1001,Dummy_1001,Dummy_1001))),_mm256_mul_pd(tmp_10_GREEN_DOWN,_mm256_set_pd(Dummy_1002,Dummy_1002,Dummy_1002,Dummy_1002)));
-                const __m256d Dummy_1007 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_6_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_mul_pd(tmp_4_GREEN_DOWN,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_1003,Dummy_1003,Dummy_1003,Dummy_1003))),_mm256_mul_pd(tmp_10_GREEN_DOWN,_mm256_set_pd(Dummy_1004,Dummy_1004,Dummy_1004,Dummy_1004)));
-                const __m256d Dummy_1008 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_mul_pd(tmp_4_GREEN_DOWN,_mm256_set_pd(Dummy_1001,Dummy_1001,Dummy_1001,Dummy_1001))),_mm256_mul_pd(tmp_6_GREEN_DOWN,_mm256_set_pd(Dummy_1003,Dummy_1003,Dummy_1003,Dummy_1003))),_mm256_mul_pd(tmp_10_GREEN_DOWN,_mm256_set_pd(Dummy_1005,Dummy_1005,Dummy_1005,Dummy_1005)));
-                const __m256d Dummy_1009 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_10_GREEN_DOWN,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_mul_pd(tmp_4_GREEN_DOWN,_mm256_set_pd(Dummy_1002,Dummy_1002,Dummy_1002,Dummy_1002))),_mm256_mul_pd(tmp_6_GREEN_DOWN,_mm256_set_pd(Dummy_1004,Dummy_1004,Dummy_1004,Dummy_1004))),_mm256_mul_pd(tmp_8_GREEN_DOWN,_mm256_set_pd(Dummy_1005,Dummy_1005,Dummy_1005,Dummy_1005)));
+                const __m256d Dummy_993 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_994 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_995 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]);
+                const __m256d Dummy_996 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]);
+                const __m256d Dummy_1001 = _mm256_mul_pd(Dummy_993,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000));
+                const __m256d Dummy_1003 = _mm256_mul_pd(Dummy_994,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000));
+                const __m256d Dummy_1005 = _mm256_mul_pd(Dummy_995,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000));
+                const __m256d Dummy_1007 = _mm256_mul_pd(Dummy_996,_mm256_set_pd(Dummy_1000,Dummy_1000,Dummy_1000,Dummy_1000));
+                const __m256d Dummy_1011 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_1001,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_997,Dummy_997,Dummy_997,Dummy_997),_mm256_set_pd(Dummy_997,Dummy_997,Dummy_997,Dummy_997)),_mm256_mul_pd(_mm256_set_pd(Dummy_998,Dummy_998,Dummy_998,Dummy_998),_mm256_set_pd(Dummy_998,Dummy_998,Dummy_998,Dummy_998))),_mm256_mul_pd(_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999),_mm256_set_pd(Dummy_999,Dummy_999,Dummy_999,Dummy_999)))),_mm256_mul_pd(Dummy_1003,_mm256_set_pd(Dummy_1002,Dummy_1002,Dummy_1002,Dummy_1002))),_mm256_mul_pd(Dummy_1005,_mm256_set_pd(Dummy_1004,Dummy_1004,Dummy_1004,Dummy_1004))),_mm256_mul_pd(Dummy_1007,_mm256_set_pd(Dummy_1006,Dummy_1006,Dummy_1006,Dummy_1006)));
+                const __m256d Dummy_1012 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_1003,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_mul_pd(Dummy_1001,_mm256_set_pd(Dummy_1002,Dummy_1002,Dummy_1002,Dummy_1002))),_mm256_mul_pd(Dummy_1005,_mm256_set_pd(Dummy_1008,Dummy_1008,Dummy_1008,Dummy_1008))),_mm256_mul_pd(Dummy_1007,_mm256_set_pd(Dummy_1009,Dummy_1009,Dummy_1009,Dummy_1009)));
+                const __m256d Dummy_1013 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_1005,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_mul_pd(Dummy_1001,_mm256_set_pd(Dummy_1004,Dummy_1004,Dummy_1004,Dummy_1004))),_mm256_mul_pd(Dummy_1003,_mm256_set_pd(Dummy_1008,Dummy_1008,Dummy_1008,Dummy_1008))),_mm256_mul_pd(Dummy_1007,_mm256_set_pd(Dummy_1010,Dummy_1010,Dummy_1010,Dummy_1010)));
+                const __m256d Dummy_1014 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(Dummy_1007,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_mul_pd(Dummy_1001,_mm256_set_pd(Dummy_1006,Dummy_1006,Dummy_1006,Dummy_1006))),_mm256_mul_pd(Dummy_1003,_mm256_set_pd(Dummy_1009,Dummy_1009,Dummy_1009,Dummy_1009))),_mm256_mul_pd(Dummy_1005,_mm256_set_pd(Dummy_1010,Dummy_1010,Dummy_1010,Dummy_1010)));
                 {
                    {
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_1006,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_1007,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_1008,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_1009,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_1011,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_1012,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(Dummy_1013,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(Dummy_1014,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
                    }
                 }
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t tmp_4_WHITE_UP = Dummy_917*src_dof_0;
-                const real_t tmp_6_WHITE_UP = Dummy_917*src_dof_1;
-                const real_t tmp_8 = Dummy_917*src_dof_2;
-                const real_t tmp_10 = Dummy_917*src_dof_3;
-                const real_t elMatVec_0 = Dummy_918*tmp_6_WHITE_UP + Dummy_919*tmp_8 + tmp_10*tmp_9 + tmp_4_WHITE_UP*((Dummy_914*Dummy_914) + (Dummy_915*Dummy_915) + (Dummy_916*Dummy_916));
-                const real_t elMatVec_1 = Dummy_918*tmp_4_WHITE_UP + tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                const real_t elMatVec_2 = Dummy_919*tmp_4_WHITE_UP + tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                const real_t elMatVec_3 = tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8 + tmp_4_WHITE_UP*tmp_9;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+                const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+                const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+                const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+                const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+                const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
                 {
                    {
                       _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -551,132 +544,132 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                       _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                    }
                 }
-                const real_t Dummy_920 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_921 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_922 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_923 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t tmp_4_WHITE_DOWN = Dummy_920*Dummy_927;
-                const real_t tmp_6_WHITE_DOWN = Dummy_921*Dummy_927;
-                const real_t tmp_8_WHITE_DOWN = Dummy_922*Dummy_927;
-                const real_t tmp_10_WHITE_DOWN = Dummy_923*Dummy_927;
-                const real_t Dummy_934 = Dummy_928*tmp_6_WHITE_DOWN + Dummy_929*tmp_8_WHITE_DOWN + Dummy_930*tmp_10_WHITE_DOWN + tmp_4_WHITE_DOWN*((Dummy_924*Dummy_924) + (Dummy_925*Dummy_925) + (Dummy_926*Dummy_926));
-                const real_t Dummy_935 = Dummy_928*tmp_4_WHITE_DOWN + Dummy_931*tmp_8_WHITE_DOWN + Dummy_932*tmp_10_WHITE_DOWN + tmp_6_WHITE_DOWN*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                const real_t Dummy_936 = Dummy_929*tmp_4_WHITE_DOWN + Dummy_931*tmp_6_WHITE_DOWN + Dummy_933*tmp_10_WHITE_DOWN + tmp_8_WHITE_DOWN*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                const real_t Dummy_937 = Dummy_930*tmp_4_WHITE_DOWN + Dummy_932*tmp_6_WHITE_DOWN + Dummy_933*tmp_8_WHITE_DOWN + tmp_10_WHITE_DOWN*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                const walberla::float64 Dummy_905 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_906 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_907 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_908 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_913 = Dummy_905*Dummy_912;
+                const walberla::float64 Dummy_915 = Dummy_906*Dummy_912;
+                const walberla::float64 Dummy_917 = Dummy_907*Dummy_912;
+                const walberla::float64 Dummy_919 = Dummy_908*Dummy_912;
+                const walberla::float64 Dummy_923 = Dummy_913*((Dummy_909*Dummy_909) + (Dummy_910*Dummy_910) + (Dummy_911*Dummy_911)) + Dummy_914*Dummy_915 + Dummy_916*Dummy_917 + Dummy_918*Dummy_919;
+                const walberla::float64 Dummy_924 = Dummy_913*Dummy_914 + Dummy_915*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)) + Dummy_917*Dummy_920 + Dummy_919*Dummy_921;
+                const walberla::float64 Dummy_925 = Dummy_913*Dummy_916 + Dummy_915*Dummy_920 + Dummy_917*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)) + Dummy_919*Dummy_922;
+                const walberla::float64 Dummy_926 = Dummy_913*Dummy_918 + Dummy_915*Dummy_921 + Dummy_917*Dummy_922 + Dummy_919*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                 {
                    {
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_934 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_935 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_936 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_937 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_923 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_924 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_925 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_926 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
-                const real_t Dummy_938 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_939 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_940 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_941 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t tmp_4_BLUE_UP = Dummy_938*Dummy_945;
-                const real_t tmp_6_BLUE_UP = Dummy_939*Dummy_945;
-                const real_t tmp_8_BLUE_UP = Dummy_940*Dummy_945;
-                const real_t tmp_10_BLUE_UP = Dummy_941*Dummy_945;
-                const real_t Dummy_952 = Dummy_946*tmp_6_BLUE_UP + Dummy_947*tmp_8_BLUE_UP + Dummy_948*tmp_10_BLUE_UP + tmp_4_BLUE_UP*((Dummy_942*Dummy_942) + (Dummy_943*Dummy_943) + (Dummy_944*Dummy_944));
-                const real_t Dummy_953 = Dummy_946*tmp_4_BLUE_UP + Dummy_949*tmp_8_BLUE_UP + Dummy_950*tmp_10_BLUE_UP + tmp_6_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                const real_t Dummy_954 = Dummy_947*tmp_4_BLUE_UP + Dummy_949*tmp_6_BLUE_UP + Dummy_951*tmp_10_BLUE_UP + tmp_8_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                const real_t Dummy_955 = Dummy_948*tmp_4_BLUE_UP + Dummy_950*tmp_6_BLUE_UP + Dummy_951*tmp_8_BLUE_UP + tmp_10_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                const walberla::float64 Dummy_927 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_928 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_929 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_930 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_935 = Dummy_927*Dummy_934;
+                const walberla::float64 Dummy_937 = Dummy_928*Dummy_934;
+                const walberla::float64 Dummy_939 = Dummy_929*Dummy_934;
+                const walberla::float64 Dummy_941 = Dummy_930*Dummy_934;
+                const walberla::float64 Dummy_945 = Dummy_935*((Dummy_931*Dummy_931) + (Dummy_932*Dummy_932) + (Dummy_933*Dummy_933)) + Dummy_936*Dummy_937 + Dummy_938*Dummy_939 + Dummy_940*Dummy_941;
+                const walberla::float64 Dummy_946 = Dummy_935*Dummy_936 + Dummy_937*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)) + Dummy_939*Dummy_942 + Dummy_941*Dummy_943;
+                const walberla::float64 Dummy_947 = Dummy_935*Dummy_938 + Dummy_937*Dummy_942 + Dummy_939*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)) + Dummy_941*Dummy_944;
+                const walberla::float64 Dummy_948 = Dummy_935*Dummy_940 + Dummy_937*Dummy_943 + Dummy_939*Dummy_944 + Dummy_941*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                 {
                    {
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_952 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_953 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_954 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_955 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_945 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_946 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_947 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_948 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
-                const real_t Dummy_956 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_957 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_958 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_959 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t tmp_4_BLUE_DOWN = Dummy_956*Dummy_963;
-                const real_t tmp_6_BLUE_DOWN = Dummy_957*Dummy_963;
-                const real_t tmp_8_BLUE_DOWN = Dummy_958*Dummy_963;
-                const real_t tmp_10_BLUE_DOWN = Dummy_959*Dummy_963;
-                const real_t Dummy_970 = Dummy_964*tmp_6_BLUE_DOWN + Dummy_965*tmp_8_BLUE_DOWN + Dummy_966*tmp_10_BLUE_DOWN + tmp_4_BLUE_DOWN*((Dummy_960*Dummy_960) + (Dummy_961*Dummy_961) + (Dummy_962*Dummy_962));
-                const real_t Dummy_971 = Dummy_964*tmp_4_BLUE_DOWN + Dummy_967*tmp_8_BLUE_DOWN + Dummy_968*tmp_10_BLUE_DOWN + tmp_6_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                const real_t Dummy_972 = Dummy_965*tmp_4_BLUE_DOWN + Dummy_967*tmp_6_BLUE_DOWN + Dummy_969*tmp_10_BLUE_DOWN + tmp_8_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                const real_t Dummy_973 = Dummy_966*tmp_4_BLUE_DOWN + Dummy_968*tmp_6_BLUE_DOWN + Dummy_969*tmp_8_BLUE_DOWN + tmp_10_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                const walberla::float64 Dummy_949 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_950 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_951 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_952 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_957 = Dummy_949*Dummy_956;
+                const walberla::float64 Dummy_959 = Dummy_950*Dummy_956;
+                const walberla::float64 Dummy_961 = Dummy_951*Dummy_956;
+                const walberla::float64 Dummy_963 = Dummy_952*Dummy_956;
+                const walberla::float64 Dummy_967 = Dummy_957*((Dummy_953*Dummy_953) + (Dummy_954*Dummy_954) + (Dummy_955*Dummy_955)) + Dummy_958*Dummy_959 + Dummy_960*Dummy_961 + Dummy_962*Dummy_963;
+                const walberla::float64 Dummy_968 = Dummy_957*Dummy_958 + Dummy_959*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)) + Dummy_961*Dummy_964 + Dummy_963*Dummy_965;
+                const walberla::float64 Dummy_969 = Dummy_957*Dummy_960 + Dummy_959*Dummy_964 + Dummy_961*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)) + Dummy_963*Dummy_966;
+                const walberla::float64 Dummy_970 = Dummy_957*Dummy_962 + Dummy_959*Dummy_965 + Dummy_961*Dummy_966 + Dummy_963*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                 {
                    {
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_970 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_971 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_972 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_973 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_967 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_968 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_969 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_970 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                    }
                 }
-                const real_t Dummy_974 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_975 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_976 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_977 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t tmp_4_GREEN_UP = Dummy_974*Dummy_981;
-                const real_t tmp_6_GREEN_UP = Dummy_975*Dummy_981;
-                const real_t tmp_8_GREEN_UP = Dummy_976*Dummy_981;
-                const real_t tmp_10_GREEN_UP = Dummy_977*Dummy_981;
-                const real_t Dummy_988 = Dummy_982*tmp_6_GREEN_UP + Dummy_983*tmp_8_GREEN_UP + Dummy_984*tmp_10_GREEN_UP + tmp_4_GREEN_UP*((Dummy_978*Dummy_978) + (Dummy_979*Dummy_979) + (Dummy_980*Dummy_980));
-                const real_t Dummy_989 = Dummy_982*tmp_4_GREEN_UP + Dummy_985*tmp_8_GREEN_UP + Dummy_986*tmp_10_GREEN_UP + tmp_6_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                const real_t Dummy_990 = Dummy_983*tmp_4_GREEN_UP + Dummy_985*tmp_6_GREEN_UP + Dummy_987*tmp_10_GREEN_UP + tmp_8_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                const real_t Dummy_991 = Dummy_984*tmp_4_GREEN_UP + Dummy_986*tmp_6_GREEN_UP + Dummy_987*tmp_8_GREEN_UP + tmp_10_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                const walberla::float64 Dummy_971 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_972 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_973 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_974 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_979 = Dummy_971*Dummy_978;
+                const walberla::float64 Dummy_981 = Dummy_972*Dummy_978;
+                const walberla::float64 Dummy_983 = Dummy_973*Dummy_978;
+                const walberla::float64 Dummy_985 = Dummy_974*Dummy_978;
+                const walberla::float64 Dummy_989 = Dummy_979*((Dummy_975*Dummy_975) + (Dummy_976*Dummy_976) + (Dummy_977*Dummy_977)) + Dummy_980*Dummy_981 + Dummy_982*Dummy_983 + Dummy_984*Dummy_985;
+                const walberla::float64 Dummy_990 = Dummy_979*Dummy_980 + Dummy_981*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)) + Dummy_983*Dummy_986 + Dummy_985*Dummy_987;
+                const walberla::float64 Dummy_991 = Dummy_979*Dummy_982 + Dummy_981*Dummy_986 + Dummy_983*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)) + Dummy_985*Dummy_988;
+                const walberla::float64 Dummy_992 = Dummy_979*Dummy_984 + Dummy_981*Dummy_987 + Dummy_983*Dummy_988 + Dummy_985*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                 {
                    {
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_988 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_989 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_990 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_991 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_989 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_990 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_991 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_992 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
-                const real_t Dummy_992 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t Dummy_993 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_994 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t Dummy_995 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t tmp_4_GREEN_DOWN = Dummy_992*Dummy_999;
-                const real_t tmp_6_GREEN_DOWN = Dummy_993*Dummy_999;
-                const real_t tmp_8_GREEN_DOWN = Dummy_994*Dummy_999;
-                const real_t tmp_10_GREEN_DOWN = Dummy_995*Dummy_999;
-                const real_t Dummy_1006 = Dummy_1000*tmp_6_GREEN_DOWN + Dummy_1001*tmp_8_GREEN_DOWN + Dummy_1002*tmp_10_GREEN_DOWN + tmp_4_GREEN_DOWN*((Dummy_996*Dummy_996) + (Dummy_997*Dummy_997) + (Dummy_998*Dummy_998));
-                const real_t Dummy_1007 = Dummy_1000*tmp_4_GREEN_DOWN + Dummy_1003*tmp_8_GREEN_DOWN + Dummy_1004*tmp_10_GREEN_DOWN + tmp_6_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                const real_t Dummy_1008 = Dummy_1001*tmp_4_GREEN_DOWN + Dummy_1003*tmp_6_GREEN_DOWN + Dummy_1005*tmp_10_GREEN_DOWN + tmp_8_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                const real_t Dummy_1009 = Dummy_1002*tmp_4_GREEN_DOWN + Dummy_1004*tmp_6_GREEN_DOWN + Dummy_1005*tmp_8_GREEN_DOWN + tmp_10_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                const walberla::float64 Dummy_993 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_994 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_995 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 Dummy_996 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 Dummy_1001 = Dummy_1000*Dummy_993;
+                const walberla::float64 Dummy_1003 = Dummy_1000*Dummy_994;
+                const walberla::float64 Dummy_1005 = Dummy_1000*Dummy_995;
+                const walberla::float64 Dummy_1007 = Dummy_1000*Dummy_996;
+                const walberla::float64 Dummy_1011 = Dummy_1001*((Dummy_997*Dummy_997) + (Dummy_998*Dummy_998) + (Dummy_999*Dummy_999)) + Dummy_1002*Dummy_1003 + Dummy_1004*Dummy_1005 + Dummy_1006*Dummy_1007;
+                const walberla::float64 Dummy_1012 = Dummy_1001*Dummy_1002 + Dummy_1003*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)) + Dummy_1005*Dummy_1008 + Dummy_1007*Dummy_1009;
+                const walberla::float64 Dummy_1013 = Dummy_1001*Dummy_1004 + Dummy_1003*Dummy_1008 + Dummy_1005*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)) + Dummy_1007*Dummy_1010;
+                const walberla::float64 Dummy_1014 = Dummy_1001*Dummy_1006 + Dummy_1003*Dummy_1009 + Dummy_1005*Dummy_1010 + Dummy_1007*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                 {
                    {
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1006 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1007 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1008 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1009 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1011 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1012 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1013 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1014 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                    }
                 }
              }
           }
           if (-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2 >= 0)
           {
-             const real_t src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_WHITE_UP = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-             const real_t tmp_1_WHITE_UP = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-             const real_t tmp_2_WHITE_UP = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-             const real_t tmp_3_WHITE_UP = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-             const real_t tmp_4_WHITE_UP = src_dof_0*tmp_3_WHITE_UP;
-             const real_t tmp_5_WHITE_UP = jac_affine_inv_0_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_6_WHITE_UP = src_dof_1*tmp_3_WHITE_UP;
-             const real_t tmp_7_WHITE_UP = jac_affine_inv_1_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_8 = src_dof_2*tmp_3_WHITE_UP;
-             const real_t tmp_9 = jac_affine_inv_2_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_2_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_2_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_10 = src_dof_3*tmp_3_WHITE_UP;
-             const real_t tmp_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
-             const real_t tmp_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-             const real_t tmp_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-             const real_t elMatVec_0 = tmp_10*tmp_9 + tmp_4_WHITE_UP*((tmp_0_WHITE_UP*tmp_0_WHITE_UP) + (tmp_1_WHITE_UP*tmp_1_WHITE_UP) + (tmp_2_WHITE_UP*tmp_2_WHITE_UP)) + tmp_5_WHITE_UP*tmp_6_WHITE_UP + tmp_7_WHITE_UP*tmp_8;
-             const real_t elMatVec_1 = tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_4_WHITE_UP*tmp_5_WHITE_UP + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMatVec_2 = tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_4_WHITE_UP*tmp_7_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMatVec_3 = tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8 + tmp_4_WHITE_UP*tmp_9;
+             const walberla::float64 src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+             const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_5 = jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_7 = jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_9 = jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+             const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
              {
                 {
                    _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatVec_0 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
@@ -685,139 +678,139 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                    _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatVec_3 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t Dummy_1010 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1011 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1012 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1013 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t tmp_0_BLUE_UP = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-             const real_t tmp_1_BLUE_UP = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-             const real_t tmp_2_BLUE_UP = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-             const real_t tmp_3_BLUE_UP = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-             const real_t tmp_4_BLUE_UP = Dummy_1010*tmp_3_BLUE_UP;
-             const real_t tmp_5_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_6_BLUE_UP = Dummy_1011*tmp_3_BLUE_UP;
-             const real_t tmp_7_BLUE_UP = jac_affine_inv_1_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_8_BLUE_UP = Dummy_1012*tmp_3_BLUE_UP;
-             const real_t tmp_9_BLUE_UP = jac_affine_inv_2_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_2_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_2_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_10_BLUE_UP = Dummy_1013*tmp_3_BLUE_UP;
-             const real_t tmp_11_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
-             const real_t tmp_12_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-             const real_t tmp_13_BLUE_UP = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-             const real_t Dummy_1014 = tmp_10_BLUE_UP*tmp_9_BLUE_UP + tmp_4_BLUE_UP*((tmp_0_BLUE_UP*tmp_0_BLUE_UP) + (tmp_1_BLUE_UP*tmp_1_BLUE_UP) + (tmp_2_BLUE_UP*tmp_2_BLUE_UP)) + tmp_5_BLUE_UP*tmp_6_BLUE_UP + tmp_7_BLUE_UP*tmp_8_BLUE_UP;
-             const real_t Dummy_1015 = tmp_10_BLUE_UP*tmp_12_BLUE_UP + tmp_11_BLUE_UP*tmp_8_BLUE_UP + tmp_4_BLUE_UP*tmp_5_BLUE_UP + tmp_6_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_1016 = tmp_10_BLUE_UP*tmp_13_BLUE_UP + tmp_11_BLUE_UP*tmp_6_BLUE_UP + tmp_4_BLUE_UP*tmp_7_BLUE_UP + tmp_8_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_1017 = tmp_10_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)) + tmp_12_BLUE_UP*tmp_6_BLUE_UP + tmp_13_BLUE_UP*tmp_8_BLUE_UP + tmp_4_BLUE_UP*tmp_9_BLUE_UP;
+             const walberla::float64 Dummy_1015 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1016 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1017 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1018 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1019 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+             const walberla::float64 Dummy_1020 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+             const walberla::float64 Dummy_1021 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1022 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1023 = Dummy_1015*Dummy_1022;
+             const walberla::float64 Dummy_1024 = Dummy_1019*jac_affine_inv_0_0_BLUE_UP + Dummy_1020*jac_affine_inv_0_1_BLUE_UP + Dummy_1021*jac_affine_inv_0_2_BLUE_UP;
+             const walberla::float64 Dummy_1025 = Dummy_1016*Dummy_1022;
+             const walberla::float64 Dummy_1026 = Dummy_1019*jac_affine_inv_1_0_BLUE_UP + Dummy_1020*jac_affine_inv_1_1_BLUE_UP + Dummy_1021*jac_affine_inv_1_2_BLUE_UP;
+             const walberla::float64 Dummy_1027 = Dummy_1017*Dummy_1022;
+             const walberla::float64 Dummy_1028 = Dummy_1019*jac_affine_inv_2_0_BLUE_UP + Dummy_1020*jac_affine_inv_2_1_BLUE_UP + Dummy_1021*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1029 = Dummy_1018*Dummy_1022;
+             const walberla::float64 Dummy_1030 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
+             const walberla::float64 Dummy_1031 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1032 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1033 = Dummy_1023*((Dummy_1019*Dummy_1019) + (Dummy_1020*Dummy_1020) + (Dummy_1021*Dummy_1021)) + Dummy_1024*Dummy_1025 + Dummy_1026*Dummy_1027 + Dummy_1028*Dummy_1029;
+             const walberla::float64 Dummy_1034 = Dummy_1023*Dummy_1024 + Dummy_1025*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)) + Dummy_1027*Dummy_1030 + Dummy_1029*Dummy_1031;
+             const walberla::float64 Dummy_1035 = Dummy_1023*Dummy_1026 + Dummy_1025*Dummy_1030 + Dummy_1027*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)) + Dummy_1029*Dummy_1032;
+             const walberla::float64 Dummy_1036 = Dummy_1023*Dummy_1028 + Dummy_1025*Dummy_1031 + Dummy_1027*Dummy_1032 + Dummy_1029*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1014 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1015 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1016 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1017 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1033 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1034 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1035 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1036 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t Dummy_1018 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1019 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1020 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1021 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_BLUE_DOWN = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-             const real_t tmp_1_BLUE_DOWN = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-             const real_t tmp_2_BLUE_DOWN = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t tmp_3_BLUE_DOWN = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-             const real_t tmp_4_BLUE_DOWN = Dummy_1018*tmp_3_BLUE_DOWN;
-             const real_t tmp_5_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_6_BLUE_DOWN = Dummy_1019*tmp_3_BLUE_DOWN;
-             const real_t tmp_7_BLUE_DOWN = jac_affine_inv_1_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_8_BLUE_DOWN = Dummy_1020*tmp_3_BLUE_DOWN;
-             const real_t tmp_9_BLUE_DOWN = jac_affine_inv_2_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_2_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_2_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_10_BLUE_DOWN = Dummy_1021*tmp_3_BLUE_DOWN;
-             const real_t tmp_11_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
-             const real_t tmp_12_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t tmp_13_BLUE_DOWN = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t Dummy_1022 = tmp_10_BLUE_DOWN*tmp_9_BLUE_DOWN + tmp_4_BLUE_DOWN*((tmp_0_BLUE_DOWN*tmp_0_BLUE_DOWN) + (tmp_1_BLUE_DOWN*tmp_1_BLUE_DOWN) + (tmp_2_BLUE_DOWN*tmp_2_BLUE_DOWN)) + tmp_5_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_7_BLUE_DOWN*tmp_8_BLUE_DOWN;
-             const real_t Dummy_1023 = tmp_10_BLUE_DOWN*tmp_12_BLUE_DOWN + tmp_11_BLUE_DOWN*tmp_8_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_5_BLUE_DOWN + tmp_6_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_1024 = tmp_10_BLUE_DOWN*tmp_13_BLUE_DOWN + tmp_11_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_7_BLUE_DOWN + tmp_8_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_1025 = tmp_10_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)) + tmp_12_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_13_BLUE_DOWN*tmp_8_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_9_BLUE_DOWN;
+             const walberla::float64 Dummy_1037 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1038 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1039 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1040 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1041 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+             const walberla::float64 Dummy_1042 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+             const walberla::float64 Dummy_1043 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1044 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1045 = Dummy_1037*Dummy_1044;
+             const walberla::float64 Dummy_1046 = Dummy_1041*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_0_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1047 = Dummy_1038*Dummy_1044;
+             const walberla::float64 Dummy_1048 = Dummy_1041*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_1_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1049 = Dummy_1039*Dummy_1044;
+             const walberla::float64 Dummy_1050 = Dummy_1041*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1051 = Dummy_1040*Dummy_1044;
+             const walberla::float64 Dummy_1052 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1053 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1054 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1055 = Dummy_1045*((Dummy_1041*Dummy_1041) + (Dummy_1042*Dummy_1042) + (Dummy_1043*Dummy_1043)) + Dummy_1046*Dummy_1047 + Dummy_1048*Dummy_1049 + Dummy_1050*Dummy_1051;
+             const walberla::float64 Dummy_1056 = Dummy_1045*Dummy_1046 + Dummy_1047*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)) + Dummy_1049*Dummy_1052 + Dummy_1051*Dummy_1053;
+             const walberla::float64 Dummy_1057 = Dummy_1045*Dummy_1048 + Dummy_1047*Dummy_1052 + Dummy_1049*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)) + Dummy_1051*Dummy_1054;
+             const walberla::float64 Dummy_1058 = Dummy_1045*Dummy_1050 + Dummy_1047*Dummy_1053 + Dummy_1049*Dummy_1054 + Dummy_1051*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1022 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1023 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1024 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1025 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1055 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1056 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1057 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1058 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t Dummy_1026 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1027 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1028 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1029 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t tmp_0_GREEN_UP = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-             const real_t tmp_1_GREEN_UP = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-             const real_t tmp_2_GREEN_UP = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-             const real_t tmp_3_GREEN_UP = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-             const real_t tmp_4_GREEN_UP = Dummy_1026*tmp_3_GREEN_UP;
-             const real_t tmp_5_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_6_GREEN_UP = Dummy_1027*tmp_3_GREEN_UP;
-             const real_t tmp_7_GREEN_UP = jac_affine_inv_1_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_8_GREEN_UP = Dummy_1028*tmp_3_GREEN_UP;
-             const real_t tmp_9_GREEN_UP = jac_affine_inv_2_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_2_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_2_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_10_GREEN_UP = Dummy_1029*tmp_3_GREEN_UP;
-             const real_t tmp_11_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
-             const real_t tmp_12_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-             const real_t tmp_13_GREEN_UP = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-             const real_t Dummy_1030 = tmp_10_GREEN_UP*tmp_9_GREEN_UP + tmp_4_GREEN_UP*((tmp_0_GREEN_UP*tmp_0_GREEN_UP) + (tmp_1_GREEN_UP*tmp_1_GREEN_UP) + (tmp_2_GREEN_UP*tmp_2_GREEN_UP)) + tmp_5_GREEN_UP*tmp_6_GREEN_UP + tmp_7_GREEN_UP*tmp_8_GREEN_UP;
-             const real_t Dummy_1031 = tmp_10_GREEN_UP*tmp_12_GREEN_UP + tmp_11_GREEN_UP*tmp_8_GREEN_UP + tmp_4_GREEN_UP*tmp_5_GREEN_UP + tmp_6_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_1032 = tmp_10_GREEN_UP*tmp_13_GREEN_UP + tmp_11_GREEN_UP*tmp_6_GREEN_UP + tmp_4_GREEN_UP*tmp_7_GREEN_UP + tmp_8_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_1033 = tmp_10_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)) + tmp_12_GREEN_UP*tmp_6_GREEN_UP + tmp_13_GREEN_UP*tmp_8_GREEN_UP + tmp_4_GREEN_UP*tmp_9_GREEN_UP;
+             const walberla::float64 Dummy_1059 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1060 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1061 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1062 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1063 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+             const walberla::float64 Dummy_1064 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+             const walberla::float64 Dummy_1065 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1066 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1067 = Dummy_1059*Dummy_1066;
+             const walberla::float64 Dummy_1068 = Dummy_1063*jac_affine_inv_0_0_GREEN_UP + Dummy_1064*jac_affine_inv_0_1_GREEN_UP + Dummy_1065*jac_affine_inv_0_2_GREEN_UP;
+             const walberla::float64 Dummy_1069 = Dummy_1060*Dummy_1066;
+             const walberla::float64 Dummy_1070 = Dummy_1063*jac_affine_inv_1_0_GREEN_UP + Dummy_1064*jac_affine_inv_1_1_GREEN_UP + Dummy_1065*jac_affine_inv_1_2_GREEN_UP;
+             const walberla::float64 Dummy_1071 = Dummy_1061*Dummy_1066;
+             const walberla::float64 Dummy_1072 = Dummy_1063*jac_affine_inv_2_0_GREEN_UP + Dummy_1064*jac_affine_inv_2_1_GREEN_UP + Dummy_1065*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1073 = Dummy_1062*Dummy_1066;
+             const walberla::float64 Dummy_1074 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
+             const walberla::float64 Dummy_1075 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1076 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1077 = Dummy_1067*((Dummy_1063*Dummy_1063) + (Dummy_1064*Dummy_1064) + (Dummy_1065*Dummy_1065)) + Dummy_1068*Dummy_1069 + Dummy_1070*Dummy_1071 + Dummy_1072*Dummy_1073;
+             const walberla::float64 Dummy_1078 = Dummy_1067*Dummy_1068 + Dummy_1069*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)) + Dummy_1071*Dummy_1074 + Dummy_1073*Dummy_1075;
+             const walberla::float64 Dummy_1079 = Dummy_1067*Dummy_1070 + Dummy_1069*Dummy_1074 + Dummy_1071*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)) + Dummy_1073*Dummy_1076;
+             const walberla::float64 Dummy_1080 = Dummy_1067*Dummy_1072 + Dummy_1069*Dummy_1075 + Dummy_1071*Dummy_1076 + Dummy_1073*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1030 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1031 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1032 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1033 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1077 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1078 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1079 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1080 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t Dummy_1034 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1035 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1036 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1037 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_GREEN_DOWN = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-             const real_t tmp_1_GREEN_DOWN = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-             const real_t tmp_2_GREEN_DOWN = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t tmp_3_GREEN_DOWN = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-             const real_t tmp_4_GREEN_DOWN = Dummy_1034*tmp_3_GREEN_DOWN;
-             const real_t tmp_5_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_6_GREEN_DOWN = Dummy_1035*tmp_3_GREEN_DOWN;
-             const real_t tmp_7_GREEN_DOWN = jac_affine_inv_1_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_8_GREEN_DOWN = Dummy_1036*tmp_3_GREEN_DOWN;
-             const real_t tmp_9_GREEN_DOWN = jac_affine_inv_2_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_2_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_2_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_10_GREEN_DOWN = Dummy_1037*tmp_3_GREEN_DOWN;
-             const real_t tmp_11_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
-             const real_t tmp_12_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t tmp_13_GREEN_DOWN = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t Dummy_1038 = tmp_10_GREEN_DOWN*tmp_9_GREEN_DOWN + tmp_4_GREEN_DOWN*((tmp_0_GREEN_DOWN*tmp_0_GREEN_DOWN) + (tmp_1_GREEN_DOWN*tmp_1_GREEN_DOWN) + (tmp_2_GREEN_DOWN*tmp_2_GREEN_DOWN)) + tmp_5_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_7_GREEN_DOWN*tmp_8_GREEN_DOWN;
-             const real_t Dummy_1039 = tmp_10_GREEN_DOWN*tmp_12_GREEN_DOWN + tmp_11_GREEN_DOWN*tmp_8_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_5_GREEN_DOWN + tmp_6_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1040 = tmp_10_GREEN_DOWN*tmp_13_GREEN_DOWN + tmp_11_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_7_GREEN_DOWN + tmp_8_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1041 = tmp_10_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)) + tmp_12_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_13_GREEN_DOWN*tmp_8_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_9_GREEN_DOWN;
+             const walberla::float64 Dummy_1081 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1082 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1083 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1084 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1085 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+             const walberla::float64 Dummy_1086 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+             const walberla::float64 Dummy_1087 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1088 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1089 = Dummy_1081*Dummy_1088;
+             const walberla::float64 Dummy_1090 = Dummy_1085*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_0_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1091 = Dummy_1082*Dummy_1088;
+             const walberla::float64 Dummy_1092 = Dummy_1085*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_1_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1093 = Dummy_1083*Dummy_1088;
+             const walberla::float64 Dummy_1094 = Dummy_1085*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1095 = Dummy_1084*Dummy_1088;
+             const walberla::float64 Dummy_1096 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1097 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1098 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1099 = Dummy_1089*((Dummy_1085*Dummy_1085) + (Dummy_1086*Dummy_1086) + (Dummy_1087*Dummy_1087)) + Dummy_1090*Dummy_1091 + Dummy_1092*Dummy_1093 + Dummy_1094*Dummy_1095;
+             const walberla::float64 Dummy_1100 = Dummy_1089*Dummy_1090 + Dummy_1091*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)) + Dummy_1093*Dummy_1096 + Dummy_1095*Dummy_1097;
+             const walberla::float64 Dummy_1101 = Dummy_1089*Dummy_1092 + Dummy_1091*Dummy_1096 + Dummy_1093*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)) + Dummy_1095*Dummy_1098;
+             const walberla::float64 Dummy_1102 = Dummy_1089*Dummy_1094 + Dummy_1091*Dummy_1097 + Dummy_1093*Dummy_1098 + Dummy_1095*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1038 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1039 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1040 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1041 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1099 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1100 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1101 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1102 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
           } 
-          const real_t src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-          const real_t src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t tmp_4_WHITE_UP = Dummy_1045*src_dof_0;
-          const real_t tmp_6_WHITE_UP = Dummy_1045*src_dof_1;
-          const real_t tmp_8 = Dummy_1045*src_dof_2;
-          const real_t tmp_10 = Dummy_1045*src_dof_3;
-          const real_t elMatVec_0 = Dummy_1046*tmp_6_WHITE_UP + Dummy_1047*tmp_8 + Dummy_1048*tmp_10 + tmp_4_WHITE_UP*((Dummy_1042*Dummy_1042) + (Dummy_1043*Dummy_1043) + (Dummy_1044*Dummy_1044));
-          const real_t elMatVec_1 = Dummy_1046*tmp_4_WHITE_UP + tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-          const real_t elMatVec_2 = Dummy_1047*tmp_4_WHITE_UP + tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-          const real_t elMatVec_3 = Dummy_1048*tmp_4_WHITE_UP + tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8;
+          const walberla::float64 src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+          const walberla::float64 src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+          const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+          const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+          const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+          const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
           {
              {
                 {
diff --git a/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
index 687380490d305ff86691538ac48f81a9557753da..1d371473dc4d6677786ce5dff7fa9ee137d17d1c 100644
--- a/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,61 +56,57 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t Dummy_1552 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t elMatDiag_0 = Dummy_1552*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-       const real_t elMatDiag_1 = Dummy_1552*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t elMatDiag_2 = Dummy_1552*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
-       const real_t Dummy_1553 = abs_det_jac_affine_BLUE*0.50000000000000089;
-       const real_t Dummy_1554 = Dummy_1553*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
-       const real_t Dummy_1555 = Dummy_1553*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-       const real_t Dummy_1556 = Dummy_1553*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
-       const real_t Dummy_1557 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t Dummy_1558 = Dummy_1557*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-       const real_t Dummy_1559 = Dummy_1557*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t Dummy_1560 = Dummy_1557*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_GRAY*0.5;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 Dummy_1594 = abs_det_jac_affine_BLUE*0.5;
+       const walberla::float64 Dummy_1595 = Dummy_1594*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
+       const walberla::float64 Dummy_1596 = Dummy_1594*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+       const walberla::float64 Dummy_1597 = Dummy_1594*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
        for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
        {
           {
@@ -125,9 +121,9 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1554,Dummy_1554,Dummy_1554,Dummy_1554),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(_mm256_set_pd(Dummy_1555,Dummy_1555,Dummy_1555,Dummy_1555),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1556,Dummy_1556,Dummy_1556,Dummy_1556),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1595,Dummy_1595,Dummy_1595,Dummy_1595),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(_mm256_set_pd(Dummy_1596,Dummy_1596,Dummy_1596,Dummy_1596),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1597,Dummy_1597,Dummy_1597,Dummy_1597),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])));
                    }
                 }
              }
@@ -142,9 +138,9 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_1554 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_1555 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_1556 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_1595 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_1596 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_1597 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
                    }
                 }
              }
@@ -152,9 +148,9 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real
           {
              {
                 {
-                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1] = Dummy_1558 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
-                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))] = Dummy_1559 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
-                   _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1] = Dummy_1560 + _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
+                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1] = elMatDiag_0 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
+                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
+                   _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1] = elMatDiag_2 + _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
                 }
              }
           }
diff --git a/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
index c652443a73fc41962ad3193f79ea580ff3504307..7c5892ce6c6c7c840fb5107fa159bc7ef392a808 100644
--- a/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/diffusion/avx/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,320 +56,315 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t Dummy_1735 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t elMatDiag_0 = Dummy_1735*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-       const real_t elMatDiag_1 = Dummy_1735*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t elMatDiag_2 = Dummy_1735*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t elMatDiag_3 = Dummy_1735*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
-       const real_t Dummy_1736 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666666;
-       const real_t Dummy_1737 = Dummy_1736*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
-       const real_t Dummy_1738 = Dummy_1736*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-       const real_t Dummy_1739 = Dummy_1736*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-       const real_t Dummy_1740 = Dummy_1736*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
-       const real_t Dummy_1741 = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-       const real_t Dummy_1742 = Dummy_1741*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-       const real_t Dummy_1743 = Dummy_1741*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-       const real_t Dummy_1744 = Dummy_1741*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-       const real_t Dummy_1745 = Dummy_1741*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
-       const real_t Dummy_1746 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-       const real_t Dummy_1747 = Dummy_1746*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-       const real_t Dummy_1748 = Dummy_1746*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-       const real_t Dummy_1749 = Dummy_1746*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-       const real_t Dummy_1750 = Dummy_1746*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
-       const real_t Dummy_1751 = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-       const real_t Dummy_1752 = Dummy_1751*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-       const real_t Dummy_1753 = Dummy_1751*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-       const real_t Dummy_1754 = Dummy_1751*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-       const real_t Dummy_1755 = Dummy_1751*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
-       const real_t Dummy_1756 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-       const real_t Dummy_1757 = Dummy_1756*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-       const real_t Dummy_1758 = Dummy_1756*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-       const real_t Dummy_1759 = Dummy_1756*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-       const real_t Dummy_1760 = Dummy_1756*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
-       const real_t Dummy_1777 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1778 = Dummy_1777*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-       const real_t Dummy_1779 = Dummy_1777*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t Dummy_1780 = Dummy_1777*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t Dummy_1781 = Dummy_1777*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+       const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 Dummy_1772 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1773 = Dummy_1772*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
+       const walberla::float64 Dummy_1774 = Dummy_1772*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1775 = Dummy_1772*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1776 = Dummy_1772*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1777 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1778 = Dummy_1777*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+       const walberla::float64 Dummy_1779 = Dummy_1777*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+       const walberla::float64 Dummy_1780 = Dummy_1777*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+       const walberla::float64 Dummy_1781 = Dummy_1777*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+       const walberla::float64 Dummy_1782 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1783 = Dummy_1782*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+       const walberla::float64 Dummy_1784 = Dummy_1782*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1785 = Dummy_1782*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1786 = Dummy_1782*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1787 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1788 = Dummy_1787*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+       const walberla::float64 Dummy_1789 = Dummy_1787*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+       const walberla::float64 Dummy_1790 = Dummy_1787*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+       const walberla::float64 Dummy_1791 = Dummy_1787*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+       const walberla::float64 Dummy_1792 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1793 = Dummy_1792*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+       const walberla::float64 Dummy_1794 = Dummy_1792*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1795 = Dummy_1792*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1796 = Dummy_1792*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
        for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
        for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
        {
@@ -386,42 +381,42 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1737,Dummy_1737,Dummy_1737,Dummy_1737),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1738,Dummy_1738,Dummy_1738,Dummy_1738),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1739,Dummy_1739,Dummy_1739,Dummy_1739),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1740,Dummy_1740,Dummy_1740,Dummy_1740),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1773,Dummy_1773,Dummy_1773,Dummy_1773),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1774,Dummy_1774,Dummy_1774,Dummy_1774),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1775,Dummy_1775,Dummy_1775,Dummy_1775),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1776,Dummy_1776,Dummy_1776,Dummy_1776),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1742,Dummy_1742,Dummy_1742,Dummy_1742),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1743,Dummy_1743,Dummy_1743,Dummy_1743),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1744,Dummy_1744,Dummy_1744,Dummy_1744),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1745,Dummy_1745,Dummy_1745,Dummy_1745),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1778,Dummy_1778,Dummy_1778,Dummy_1778),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1779,Dummy_1779,Dummy_1779,Dummy_1779),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1780,Dummy_1780,Dummy_1780,Dummy_1780),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1781,Dummy_1781,Dummy_1781,Dummy_1781),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1747,Dummy_1747,Dummy_1747,Dummy_1747),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1748,Dummy_1748,Dummy_1748,Dummy_1748),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1749,Dummy_1749,Dummy_1749,Dummy_1749),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1750,Dummy_1750,Dummy_1750,Dummy_1750),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1783,Dummy_1783,Dummy_1783,Dummy_1783),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1784,Dummy_1784,Dummy_1784,Dummy_1784),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1785,Dummy_1785,Dummy_1785,Dummy_1785),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1786,Dummy_1786,Dummy_1786,Dummy_1786),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
                    }
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1752,Dummy_1752,Dummy_1752,Dummy_1752),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1753,Dummy_1753,Dummy_1753,Dummy_1753),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1754,Dummy_1754,Dummy_1754,Dummy_1754),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1755,Dummy_1755,Dummy_1755,Dummy_1755),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1788,Dummy_1788,Dummy_1788,Dummy_1788),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1789,Dummy_1789,Dummy_1789,Dummy_1789),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1790,Dummy_1790,Dummy_1790,Dummy_1790),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1791,Dummy_1791,Dummy_1791,Dummy_1791),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
                    }
                 }
                 {
                    {
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1757,Dummy_1757,Dummy_1757,Dummy_1757),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1758,Dummy_1758,Dummy_1758,Dummy_1758),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1759,Dummy_1759,Dummy_1759,Dummy_1759),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
-                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1760,Dummy_1760,Dummy_1760,Dummy_1760),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1793,Dummy_1793,Dummy_1793,Dummy_1793),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1794,Dummy_1794,Dummy_1794,Dummy_1794),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(_mm256_set_pd(Dummy_1795,Dummy_1795,Dummy_1795,Dummy_1795),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])));
+                      _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(_mm256_set_pd(Dummy_1796,Dummy_1796,Dummy_1796,Dummy_1796),_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])));
                    }
                 }
              }
@@ -437,53 +432,53 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1737 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1738 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1739 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1740 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1773 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1774 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1775 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1776 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1742 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1743 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1744 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1745 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1778 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1779 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1780 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1781 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1747 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1748 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1749 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1750 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1783 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1784 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1785 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1786 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                    }
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1752 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1753 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1754 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1755 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1788 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1789 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1790 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1791 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                    }
                 }
                 {
                    {
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1757 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1758 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1759 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1760 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1793 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1794 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1795 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                      _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1796 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                    }
                 }
              }
           }
           if (-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2 >= 0)
           {
-             const real_t tmp_0_WHITE_UP = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-             const real_t elMatDiag_0 = tmp_0_WHITE_UP*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-             const real_t elMatDiag_1 = tmp_0_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMatDiag_2 = tmp_0_WHITE_UP*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMatDiag_3 = tmp_0_WHITE_UP*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+             const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+             const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+             const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
              {
                 {
                    _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatDiag_0 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
@@ -492,66 +487,66 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real
                    _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatDiag_3 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t tmp_0_BLUE_UP = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-             const real_t Dummy_1761 = tmp_0_BLUE_UP*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-             const real_t Dummy_1762 = tmp_0_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_1763 = tmp_0_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_1764 = tmp_0_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+             const walberla::float64 Dummy_1797 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1798 = Dummy_1797*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+             const walberla::float64 Dummy_1799 = Dummy_1797*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+             const walberla::float64 Dummy_1800 = Dummy_1797*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+             const walberla::float64 Dummy_1801 = Dummy_1797*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1761 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1762 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1763 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1764 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1798 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1799 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1800 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1801 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t tmp_0_BLUE_DOWN = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-             const real_t Dummy_1765 = tmp_0_BLUE_DOWN*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-             const real_t Dummy_1766 = tmp_0_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_1767 = tmp_0_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_1768 = tmp_0_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1802 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1803 = Dummy_1802*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+             const walberla::float64 Dummy_1804 = Dummy_1802*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1805 = Dummy_1802*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1806 = Dummy_1802*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1765 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1766 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1767 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1768 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1803 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1804 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1805 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1806 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t tmp_0_GREEN_UP = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-             const real_t Dummy_1769 = tmp_0_GREEN_UP*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-             const real_t Dummy_1770 = tmp_0_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_1771 = tmp_0_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_1772 = tmp_0_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+             const walberla::float64 Dummy_1807 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1808 = Dummy_1807*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+             const walberla::float64 Dummy_1809 = Dummy_1807*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+             const walberla::float64 Dummy_1810 = Dummy_1807*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+             const walberla::float64 Dummy_1811 = Dummy_1807*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1769 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1770 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1771 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1772 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1808 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1809 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1810 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1811 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t tmp_0_GREEN_DOWN = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-             const real_t Dummy_1773 = tmp_0_GREEN_DOWN*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-             const real_t Dummy_1774 = tmp_0_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1775 = tmp_0_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1776 = tmp_0_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1812 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1813 = Dummy_1812*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+             const walberla::float64 Dummy_1814 = Dummy_1812*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1815 = Dummy_1812*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1816 = Dummy_1812*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1773 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1774 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1775 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1776 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1813 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1814 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1815 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1816 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
           } 
           {
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1778 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1779 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1780 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1781 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_0 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_2 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_3 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
           }
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_2D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_2D.cpp
index fa4f8faf9d7a95a7fe72d97f2135d96be8060c50..850091e169f10ded0623128bb5ca82d53bb58a33 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_2D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_2D.cpp
@@ -56,79 +56,74 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t Dummy_719 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_720 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_721 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t tmp_4 = Dummy_719*jac_affine_inv_0_0_GRAY + Dummy_720*jac_affine_inv_0_1_GRAY;
-       const real_t tmp_6 = Dummy_719*jac_affine_inv_1_0_GRAY + Dummy_720*jac_affine_inv_1_1_GRAY;
-       const real_t tmp_8 = jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_725 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_726 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_727 = abs_det_jac_affine_BLUE*0.50000000000000089;
-       const real_t Dummy_728 = Dummy_725*jac_affine_inv_0_0_BLUE + Dummy_726*jac_affine_inv_0_1_BLUE;
-       const real_t Dummy_729 = Dummy_725*jac_affine_inv_1_0_BLUE + Dummy_726*jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_731 = jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_735 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_736 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_737 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t Dummy_738 = Dummy_735*jac_affine_inv_0_0_GRAY + Dummy_736*jac_affine_inv_0_1_GRAY;
-       const real_t Dummy_739 = Dummy_735*jac_affine_inv_1_0_GRAY + Dummy_736*jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_kernel_op_2 = abs_det_jac_affine_GRAY*0.5;
+       const walberla::float64 tmp_kernel_op_4 = jac_affine_inv_0_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_0_1_GRAY*tmp_kernel_op_1;
+       const walberla::float64 tmp_kernel_op_6 = jac_affine_inv_1_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_1_1_GRAY*tmp_kernel_op_1;
+       const walberla::float64 tmp_kernel_op_8 = jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY;
+       const walberla::float64 Dummy_719 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_720 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 Dummy_721 = abs_det_jac_affine_BLUE*0.5;
+       const walberla::float64 Dummy_723 = Dummy_719*jac_affine_inv_0_0_BLUE + Dummy_720*jac_affine_inv_0_1_BLUE;
+       const walberla::float64 Dummy_725 = Dummy_719*jac_affine_inv_1_0_BLUE + Dummy_720*jac_affine_inv_1_1_BLUE;
+       const walberla::float64 Dummy_727 = jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE;
        for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
        {
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t tmp_3 = Dummy_721*src_dof_0;
-             const real_t tmp_5 = Dummy_721*src_dof_1;
-             const real_t tmp_7 = Dummy_721*src_dof_2;
-             const real_t elMatVec_0 = tmp_3*((Dummy_719*Dummy_719) + (Dummy_720*Dummy_720)) + tmp_4*tmp_5 + tmp_6*tmp_7;
-             const real_t elMatVec_1 = tmp_3*tmp_4 + tmp_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_7*tmp_8;
-             const real_t elMatVec_2 = tmp_3*tmp_6 + tmp_5*tmp_8 + tmp_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 tmp_kernel_op_3 = src_dof_0*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_2;
+             const walberla::float64 elMatVec_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1)) + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_7;
+             const walberla::float64 elMatVec_1 = tmp_kernel_op_3*tmp_kernel_op_4 + tmp_kernel_op_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_kernel_op_7*tmp_kernel_op_8;
+             const walberla::float64 elMatVec_2 = tmp_kernel_op_3*tmp_kernel_op_6 + tmp_kernel_op_5*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
              {
                 {
                    _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
@@ -136,32 +131,32 @@ void P1ElementwiseDiffusion::apply_macro_2D( real_t * RESTRICT  _data_dst, real_
                    _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 }
              }
-             const real_t Dummy_722 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t Dummy_723 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t Dummy_724 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t tmp_3_BLUE = Dummy_722*Dummy_727;
-             const real_t tmp_5_BLUE = Dummy_723*Dummy_727;
-             const real_t Dummy_730 = Dummy_724*Dummy_727;
-             const real_t Dummy_732 = Dummy_728*tmp_5_BLUE + Dummy_729*Dummy_730 + tmp_3_BLUE*((Dummy_725*Dummy_725) + (Dummy_726*Dummy_726));
-             const real_t Dummy_733 = Dummy_728*tmp_3_BLUE + Dummy_730*Dummy_731 + tmp_5_BLUE*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-             const real_t Dummy_734 = Dummy_729*tmp_3_BLUE + Dummy_730*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)) + Dummy_731*tmp_5_BLUE;
+             const walberla::float64 Dummy_716 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 Dummy_717 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 Dummy_718 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 Dummy_722 = Dummy_716*Dummy_721;
+             const walberla::float64 Dummy_724 = Dummy_717*Dummy_721;
+             const walberla::float64 Dummy_726 = Dummy_718*Dummy_721;
+             const walberla::float64 Dummy_728 = Dummy_722*((Dummy_719*Dummy_719) + (Dummy_720*Dummy_720)) + Dummy_723*Dummy_724 + Dummy_725*Dummy_726;
+             const walberla::float64 Dummy_729 = Dummy_722*Dummy_723 + Dummy_724*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)) + Dummy_726*Dummy_727;
+             const walberla::float64 Dummy_730 = Dummy_722*Dummy_725 + Dummy_724*Dummy_727 + Dummy_726*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
              {
                 {
-                   _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_732 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_733 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_734 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_728 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_729 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_730 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
                 }
              }
           }
-          const real_t src_dof_0 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
-          const real_t src_dof_1 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
-          const real_t src_dof_2 = _data_src[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
-          const real_t tmp_3 = Dummy_737*src_dof_0;
-          const real_t tmp_5 = Dummy_737*src_dof_1;
-          const real_t tmp_7 = Dummy_737*src_dof_2;
-          const real_t elMatVec_0 = Dummy_738*tmp_5 + Dummy_739*tmp_7 + tmp_3*((Dummy_735*Dummy_735) + (Dummy_736*Dummy_736));
-          const real_t elMatVec_1 = Dummy_738*tmp_3 + tmp_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_7*tmp_8;
-          const real_t elMatVec_2 = Dummy_739*tmp_3 + tmp_5*tmp_8 + tmp_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+          const walberla::float64 src_dof_0 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
+          const walberla::float64 src_dof_1 = _data_src[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
+          const walberla::float64 src_dof_2 = _data_src[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
+          const walberla::float64 tmp_kernel_op_3 = src_dof_0*tmp_kernel_op_2;
+          const walberla::float64 tmp_kernel_op_5 = src_dof_1*tmp_kernel_op_2;
+          const walberla::float64 tmp_kernel_op_7 = src_dof_2*tmp_kernel_op_2;
+          const walberla::float64 elMatVec_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1)) + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*tmp_kernel_op_7;
+          const walberla::float64 elMatVec_1 = tmp_kernel_op_3*tmp_kernel_op_4 + tmp_kernel_op_5*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)) + tmp_kernel_op_7*tmp_kernel_op_8;
+          const walberla::float64 elMatVec_2 = tmp_kernel_op_3*tmp_kernel_op_6 + tmp_kernel_op_5*tmp_kernel_op_8 + tmp_kernel_op_7*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
           {
              {
                 {
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_3D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_3D.cpp
index f4e2a28880d746ff6d6a82ff6ff8daad181a0e17..43b5c5f40bf5a39ab332603d5c135e253c5a7906 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_3D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_apply_macro_3D.cpp
@@ -56,369 +56,362 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t Dummy_914 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_915 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_916 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_917 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_918 = Dummy_914*jac_affine_inv_0_0_WHITE_UP + Dummy_915*jac_affine_inv_0_1_WHITE_UP + Dummy_916*jac_affine_inv_0_2_WHITE_UP;
-       const real_t Dummy_919 = Dummy_914*jac_affine_inv_1_0_WHITE_UP + Dummy_915*jac_affine_inv_1_1_WHITE_UP + Dummy_916*jac_affine_inv_1_2_WHITE_UP;
-       const real_t tmp_9 = Dummy_914*jac_affine_inv_2_0_WHITE_UP + Dummy_915*jac_affine_inv_2_1_WHITE_UP + Dummy_916*jac_affine_inv_2_2_WHITE_UP;
-       const real_t tmp_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
-       const real_t tmp_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-       const real_t tmp_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_924 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_925 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_926 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_927 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666666;
-       const real_t Dummy_928 = Dummy_924*jac_affine_inv_0_0_WHITE_DOWN + Dummy_925*jac_affine_inv_0_1_WHITE_DOWN + Dummy_926*jac_affine_inv_0_2_WHITE_DOWN;
-       const real_t Dummy_929 = Dummy_924*jac_affine_inv_1_0_WHITE_DOWN + Dummy_925*jac_affine_inv_1_1_WHITE_DOWN + Dummy_926*jac_affine_inv_1_2_WHITE_DOWN;
-       const real_t Dummy_930 = Dummy_924*jac_affine_inv_2_0_WHITE_DOWN + Dummy_925*jac_affine_inv_2_1_WHITE_DOWN + Dummy_926*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_931 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN;
-       const real_t Dummy_932 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_933 = jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_942 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_943 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_944 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_945 = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-       const real_t Dummy_946 = Dummy_942*jac_affine_inv_0_0_BLUE_UP + Dummy_943*jac_affine_inv_0_1_BLUE_UP + Dummy_944*jac_affine_inv_0_2_BLUE_UP;
-       const real_t Dummy_947 = Dummy_942*jac_affine_inv_1_0_BLUE_UP + Dummy_943*jac_affine_inv_1_1_BLUE_UP + Dummy_944*jac_affine_inv_1_2_BLUE_UP;
-       const real_t Dummy_948 = Dummy_942*jac_affine_inv_2_0_BLUE_UP + Dummy_943*jac_affine_inv_2_1_BLUE_UP + Dummy_944*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_949 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
-       const real_t Dummy_950 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_951 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_960 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_961 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_962 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_963 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-       const real_t Dummy_964 = Dummy_960*jac_affine_inv_0_0_BLUE_DOWN + Dummy_961*jac_affine_inv_0_1_BLUE_DOWN + Dummy_962*jac_affine_inv_0_2_BLUE_DOWN;
-       const real_t Dummy_965 = Dummy_960*jac_affine_inv_1_0_BLUE_DOWN + Dummy_961*jac_affine_inv_1_1_BLUE_DOWN + Dummy_962*jac_affine_inv_1_2_BLUE_DOWN;
-       const real_t Dummy_966 = Dummy_960*jac_affine_inv_2_0_BLUE_DOWN + Dummy_961*jac_affine_inv_2_1_BLUE_DOWN + Dummy_962*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_967 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
-       const real_t Dummy_968 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_969 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_978 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_979 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_980 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_981 = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-       const real_t Dummy_982 = Dummy_978*jac_affine_inv_0_0_GREEN_UP + Dummy_979*jac_affine_inv_0_1_GREEN_UP + Dummy_980*jac_affine_inv_0_2_GREEN_UP;
-       const real_t Dummy_983 = Dummy_978*jac_affine_inv_1_0_GREEN_UP + Dummy_979*jac_affine_inv_1_1_GREEN_UP + Dummy_980*jac_affine_inv_1_2_GREEN_UP;
-       const real_t Dummy_984 = Dummy_978*jac_affine_inv_2_0_GREEN_UP + Dummy_979*jac_affine_inv_2_1_GREEN_UP + Dummy_980*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_985 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
-       const real_t Dummy_986 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_987 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_996 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_997 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_998 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_999 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-       const real_t Dummy_1000 = Dummy_996*jac_affine_inv_0_0_GREEN_DOWN + Dummy_997*jac_affine_inv_0_1_GREEN_DOWN + Dummy_998*jac_affine_inv_0_2_GREEN_DOWN;
-       const real_t Dummy_1001 = Dummy_996*jac_affine_inv_1_0_GREEN_DOWN + Dummy_997*jac_affine_inv_1_1_GREEN_DOWN + Dummy_998*jac_affine_inv_1_2_GREEN_DOWN;
-       const real_t Dummy_1002 = Dummy_996*jac_affine_inv_2_0_GREEN_DOWN + Dummy_997*jac_affine_inv_2_1_GREEN_DOWN + Dummy_998*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1003 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
-       const real_t Dummy_1004 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1005 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1042 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_1043 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_1044 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_1045 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1046 = Dummy_1042*jac_affine_inv_0_0_WHITE_UP + Dummy_1043*jac_affine_inv_0_1_WHITE_UP + Dummy_1044*jac_affine_inv_0_2_WHITE_UP;
-       const real_t Dummy_1047 = Dummy_1042*jac_affine_inv_1_0_WHITE_UP + Dummy_1043*jac_affine_inv_1_1_WHITE_UP + Dummy_1044*jac_affine_inv_1_2_WHITE_UP;
-       const real_t Dummy_1048 = Dummy_1042*jac_affine_inv_2_0_WHITE_UP + Dummy_1043*jac_affine_inv_2_1_WHITE_UP + Dummy_1044*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_5 = jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_7 = jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_9 = jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2;
+       const walberla::float64 tmp_kernel_op_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 Dummy_909 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_910 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_911 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_912 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_914 = Dummy_909*jac_affine_inv_0_0_WHITE_DOWN + Dummy_910*jac_affine_inv_0_1_WHITE_DOWN + Dummy_911*jac_affine_inv_0_2_WHITE_DOWN;
+       const walberla::float64 Dummy_916 = Dummy_909*jac_affine_inv_1_0_WHITE_DOWN + Dummy_910*jac_affine_inv_1_1_WHITE_DOWN + Dummy_911*jac_affine_inv_1_2_WHITE_DOWN;
+       const walberla::float64 Dummy_918 = Dummy_909*jac_affine_inv_2_0_WHITE_DOWN + Dummy_910*jac_affine_inv_2_1_WHITE_DOWN + Dummy_911*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_920 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN;
+       const walberla::float64 Dummy_921 = jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_922 = jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_931 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_932 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_933 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_934 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+       const walberla::float64 Dummy_936 = Dummy_931*jac_affine_inv_0_0_BLUE_UP + Dummy_932*jac_affine_inv_0_1_BLUE_UP + Dummy_933*jac_affine_inv_0_2_BLUE_UP;
+       const walberla::float64 Dummy_938 = Dummy_931*jac_affine_inv_1_0_BLUE_UP + Dummy_932*jac_affine_inv_1_1_BLUE_UP + Dummy_933*jac_affine_inv_1_2_BLUE_UP;
+       const walberla::float64 Dummy_940 = Dummy_931*jac_affine_inv_2_0_BLUE_UP + Dummy_932*jac_affine_inv_2_1_BLUE_UP + Dummy_933*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_942 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
+       const walberla::float64 Dummy_943 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_944 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_953 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_954 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_955 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_956 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_958 = Dummy_953*jac_affine_inv_0_0_BLUE_DOWN + Dummy_954*jac_affine_inv_0_1_BLUE_DOWN + Dummy_955*jac_affine_inv_0_2_BLUE_DOWN;
+       const walberla::float64 Dummy_960 = Dummy_953*jac_affine_inv_1_0_BLUE_DOWN + Dummy_954*jac_affine_inv_1_1_BLUE_DOWN + Dummy_955*jac_affine_inv_1_2_BLUE_DOWN;
+       const walberla::float64 Dummy_962 = Dummy_953*jac_affine_inv_2_0_BLUE_DOWN + Dummy_954*jac_affine_inv_2_1_BLUE_DOWN + Dummy_955*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_964 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
+       const walberla::float64 Dummy_965 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_966 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_975 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_976 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_977 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_978 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+       const walberla::float64 Dummy_980 = Dummy_975*jac_affine_inv_0_0_GREEN_UP + Dummy_976*jac_affine_inv_0_1_GREEN_UP + Dummy_977*jac_affine_inv_0_2_GREEN_UP;
+       const walberla::float64 Dummy_982 = Dummy_975*jac_affine_inv_1_0_GREEN_UP + Dummy_976*jac_affine_inv_1_1_GREEN_UP + Dummy_977*jac_affine_inv_1_2_GREEN_UP;
+       const walberla::float64 Dummy_984 = Dummy_975*jac_affine_inv_2_0_GREEN_UP + Dummy_976*jac_affine_inv_2_1_GREEN_UP + Dummy_977*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_986 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
+       const walberla::float64 Dummy_987 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_988 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_997 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_998 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_999 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1000 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1002 = Dummy_997*jac_affine_inv_0_0_GREEN_DOWN + Dummy_998*jac_affine_inv_0_1_GREEN_DOWN + Dummy_999*jac_affine_inv_0_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1004 = Dummy_997*jac_affine_inv_1_0_GREEN_DOWN + Dummy_998*jac_affine_inv_1_1_GREEN_DOWN + Dummy_999*jac_affine_inv_1_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1006 = Dummy_997*jac_affine_inv_2_0_GREEN_DOWN + Dummy_998*jac_affine_inv_2_1_GREEN_DOWN + Dummy_999*jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1008 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1009 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1010 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
        for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
        for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
        {
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t tmp_4_WHITE_UP = Dummy_917*src_dof_0;
-             const real_t tmp_6_WHITE_UP = Dummy_917*src_dof_1;
-             const real_t tmp_8 = Dummy_917*src_dof_2;
-             const real_t tmp_10 = Dummy_917*src_dof_3;
-             const real_t elMatVec_0 = Dummy_918*tmp_6_WHITE_UP + Dummy_919*tmp_8 + tmp_10*tmp_9 + tmp_4_WHITE_UP*((Dummy_914*Dummy_914) + (Dummy_915*Dummy_915) + (Dummy_916*Dummy_916));
-             const real_t elMatVec_1 = Dummy_918*tmp_4_WHITE_UP + tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMatVec_2 = Dummy_919*tmp_4_WHITE_UP + tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMatVec_3 = tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8 + tmp_4_WHITE_UP*tmp_9;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+             const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+             const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
              {
                 {
                    _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -427,131 +420,131 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                    _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 }
              }
-             const real_t Dummy_920 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_921 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_922 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_923 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t tmp_4_WHITE_DOWN = Dummy_920*Dummy_927;
-             const real_t tmp_6_WHITE_DOWN = Dummy_921*Dummy_927;
-             const real_t tmp_8_WHITE_DOWN = Dummy_922*Dummy_927;
-             const real_t tmp_10_WHITE_DOWN = Dummy_923*Dummy_927;
-             const real_t Dummy_934 = Dummy_928*tmp_6_WHITE_DOWN + Dummy_929*tmp_8_WHITE_DOWN + Dummy_930*tmp_10_WHITE_DOWN + tmp_4_WHITE_DOWN*((Dummy_924*Dummy_924) + (Dummy_925*Dummy_925) + (Dummy_926*Dummy_926));
-             const real_t Dummy_935 = Dummy_928*tmp_4_WHITE_DOWN + Dummy_931*tmp_8_WHITE_DOWN + Dummy_932*tmp_10_WHITE_DOWN + tmp_6_WHITE_DOWN*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-             const real_t Dummy_936 = Dummy_929*tmp_4_WHITE_DOWN + Dummy_931*tmp_6_WHITE_DOWN + Dummy_933*tmp_10_WHITE_DOWN + tmp_8_WHITE_DOWN*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-             const real_t Dummy_937 = Dummy_930*tmp_4_WHITE_DOWN + Dummy_932*tmp_6_WHITE_DOWN + Dummy_933*tmp_8_WHITE_DOWN + tmp_10_WHITE_DOWN*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+             const walberla::float64 Dummy_905 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_906 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_907 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_908 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_913 = Dummy_905*Dummy_912;
+             const walberla::float64 Dummy_915 = Dummy_906*Dummy_912;
+             const walberla::float64 Dummy_917 = Dummy_907*Dummy_912;
+             const walberla::float64 Dummy_919 = Dummy_908*Dummy_912;
+             const walberla::float64 Dummy_923 = Dummy_913*((Dummy_909*Dummy_909) + (Dummy_910*Dummy_910) + (Dummy_911*Dummy_911)) + Dummy_914*Dummy_915 + Dummy_916*Dummy_917 + Dummy_918*Dummy_919;
+             const walberla::float64 Dummy_924 = Dummy_913*Dummy_914 + Dummy_915*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)) + Dummy_917*Dummy_920 + Dummy_919*Dummy_921;
+             const walberla::float64 Dummy_925 = Dummy_913*Dummy_916 + Dummy_915*Dummy_920 + Dummy_917*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)) + Dummy_919*Dummy_922;
+             const walberla::float64 Dummy_926 = Dummy_913*Dummy_918 + Dummy_915*Dummy_921 + Dummy_917*Dummy_922 + Dummy_919*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
              {
                 {
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_934 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_935 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_936 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_937 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_923 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_924 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_925 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_926 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
-             const real_t Dummy_938 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_939 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_940 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_941 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t tmp_4_BLUE_UP = Dummy_938*Dummy_945;
-             const real_t tmp_6_BLUE_UP = Dummy_939*Dummy_945;
-             const real_t tmp_8_BLUE_UP = Dummy_940*Dummy_945;
-             const real_t tmp_10_BLUE_UP = Dummy_941*Dummy_945;
-             const real_t Dummy_952 = Dummy_946*tmp_6_BLUE_UP + Dummy_947*tmp_8_BLUE_UP + Dummy_948*tmp_10_BLUE_UP + tmp_4_BLUE_UP*((Dummy_942*Dummy_942) + (Dummy_943*Dummy_943) + (Dummy_944*Dummy_944));
-             const real_t Dummy_953 = Dummy_946*tmp_4_BLUE_UP + Dummy_949*tmp_8_BLUE_UP + Dummy_950*tmp_10_BLUE_UP + tmp_6_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_954 = Dummy_947*tmp_4_BLUE_UP + Dummy_949*tmp_6_BLUE_UP + Dummy_951*tmp_10_BLUE_UP + tmp_8_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_955 = Dummy_948*tmp_4_BLUE_UP + Dummy_950*tmp_6_BLUE_UP + Dummy_951*tmp_8_BLUE_UP + tmp_10_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+             const walberla::float64 Dummy_927 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_928 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_929 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_930 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_935 = Dummy_927*Dummy_934;
+             const walberla::float64 Dummy_937 = Dummy_928*Dummy_934;
+             const walberla::float64 Dummy_939 = Dummy_929*Dummy_934;
+             const walberla::float64 Dummy_941 = Dummy_930*Dummy_934;
+             const walberla::float64 Dummy_945 = Dummy_935*((Dummy_931*Dummy_931) + (Dummy_932*Dummy_932) + (Dummy_933*Dummy_933)) + Dummy_936*Dummy_937 + Dummy_938*Dummy_939 + Dummy_940*Dummy_941;
+             const walberla::float64 Dummy_946 = Dummy_935*Dummy_936 + Dummy_937*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)) + Dummy_939*Dummy_942 + Dummy_941*Dummy_943;
+             const walberla::float64 Dummy_947 = Dummy_935*Dummy_938 + Dummy_937*Dummy_942 + Dummy_939*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)) + Dummy_941*Dummy_944;
+             const walberla::float64 Dummy_948 = Dummy_935*Dummy_940 + Dummy_937*Dummy_943 + Dummy_939*Dummy_944 + Dummy_941*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_952 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_953 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_954 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_955 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_945 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_946 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_947 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_948 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
-             const real_t Dummy_956 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_957 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_958 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_959 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t tmp_4_BLUE_DOWN = Dummy_956*Dummy_963;
-             const real_t tmp_6_BLUE_DOWN = Dummy_957*Dummy_963;
-             const real_t tmp_8_BLUE_DOWN = Dummy_958*Dummy_963;
-             const real_t tmp_10_BLUE_DOWN = Dummy_959*Dummy_963;
-             const real_t Dummy_970 = Dummy_964*tmp_6_BLUE_DOWN + Dummy_965*tmp_8_BLUE_DOWN + Dummy_966*tmp_10_BLUE_DOWN + tmp_4_BLUE_DOWN*((Dummy_960*Dummy_960) + (Dummy_961*Dummy_961) + (Dummy_962*Dummy_962));
-             const real_t Dummy_971 = Dummy_964*tmp_4_BLUE_DOWN + Dummy_967*tmp_8_BLUE_DOWN + Dummy_968*tmp_10_BLUE_DOWN + tmp_6_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_972 = Dummy_965*tmp_4_BLUE_DOWN + Dummy_967*tmp_6_BLUE_DOWN + Dummy_969*tmp_10_BLUE_DOWN + tmp_8_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_973 = Dummy_966*tmp_4_BLUE_DOWN + Dummy_968*tmp_6_BLUE_DOWN + Dummy_969*tmp_8_BLUE_DOWN + tmp_10_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+             const walberla::float64 Dummy_949 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_950 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_951 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_952 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_957 = Dummy_949*Dummy_956;
+             const walberla::float64 Dummy_959 = Dummy_950*Dummy_956;
+             const walberla::float64 Dummy_961 = Dummy_951*Dummy_956;
+             const walberla::float64 Dummy_963 = Dummy_952*Dummy_956;
+             const walberla::float64 Dummy_967 = Dummy_957*((Dummy_953*Dummy_953) + (Dummy_954*Dummy_954) + (Dummy_955*Dummy_955)) + Dummy_958*Dummy_959 + Dummy_960*Dummy_961 + Dummy_962*Dummy_963;
+             const walberla::float64 Dummy_968 = Dummy_957*Dummy_958 + Dummy_959*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)) + Dummy_961*Dummy_964 + Dummy_963*Dummy_965;
+             const walberla::float64 Dummy_969 = Dummy_957*Dummy_960 + Dummy_959*Dummy_964 + Dummy_961*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)) + Dummy_963*Dummy_966;
+             const walberla::float64 Dummy_970 = Dummy_957*Dummy_962 + Dummy_959*Dummy_965 + Dummy_961*Dummy_966 + Dummy_963*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_970 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_971 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_972 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_973 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_967 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_968 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_969 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_970 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 }
              }
-             const real_t Dummy_974 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_975 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_976 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_977 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t tmp_4_GREEN_UP = Dummy_974*Dummy_981;
-             const real_t tmp_6_GREEN_UP = Dummy_975*Dummy_981;
-             const real_t tmp_8_GREEN_UP = Dummy_976*Dummy_981;
-             const real_t tmp_10_GREEN_UP = Dummy_977*Dummy_981;
-             const real_t Dummy_988 = Dummy_982*tmp_6_GREEN_UP + Dummy_983*tmp_8_GREEN_UP + Dummy_984*tmp_10_GREEN_UP + tmp_4_GREEN_UP*((Dummy_978*Dummy_978) + (Dummy_979*Dummy_979) + (Dummy_980*Dummy_980));
-             const real_t Dummy_989 = Dummy_982*tmp_4_GREEN_UP + Dummy_985*tmp_8_GREEN_UP + Dummy_986*tmp_10_GREEN_UP + tmp_6_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_990 = Dummy_983*tmp_4_GREEN_UP + Dummy_985*tmp_6_GREEN_UP + Dummy_987*tmp_10_GREEN_UP + tmp_8_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_991 = Dummy_984*tmp_4_GREEN_UP + Dummy_986*tmp_6_GREEN_UP + Dummy_987*tmp_8_GREEN_UP + tmp_10_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+             const walberla::float64 Dummy_971 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_972 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_973 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_974 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_979 = Dummy_971*Dummy_978;
+             const walberla::float64 Dummy_981 = Dummy_972*Dummy_978;
+             const walberla::float64 Dummy_983 = Dummy_973*Dummy_978;
+             const walberla::float64 Dummy_985 = Dummy_974*Dummy_978;
+             const walberla::float64 Dummy_989 = Dummy_979*((Dummy_975*Dummy_975) + (Dummy_976*Dummy_976) + (Dummy_977*Dummy_977)) + Dummy_980*Dummy_981 + Dummy_982*Dummy_983 + Dummy_984*Dummy_985;
+             const walberla::float64 Dummy_990 = Dummy_979*Dummy_980 + Dummy_981*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)) + Dummy_983*Dummy_986 + Dummy_985*Dummy_987;
+             const walberla::float64 Dummy_991 = Dummy_979*Dummy_982 + Dummy_981*Dummy_986 + Dummy_983*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)) + Dummy_985*Dummy_988;
+             const walberla::float64 Dummy_992 = Dummy_979*Dummy_984 + Dummy_981*Dummy_987 + Dummy_983*Dummy_988 + Dummy_985*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_988 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_989 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_990 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_991 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_989 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_990 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_991 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_992 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
-             const real_t Dummy_992 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t Dummy_993 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_994 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t Dummy_995 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t tmp_4_GREEN_DOWN = Dummy_992*Dummy_999;
-             const real_t tmp_6_GREEN_DOWN = Dummy_993*Dummy_999;
-             const real_t tmp_8_GREEN_DOWN = Dummy_994*Dummy_999;
-             const real_t tmp_10_GREEN_DOWN = Dummy_995*Dummy_999;
-             const real_t Dummy_1006 = Dummy_1000*tmp_6_GREEN_DOWN + Dummy_1001*tmp_8_GREEN_DOWN + Dummy_1002*tmp_10_GREEN_DOWN + tmp_4_GREEN_DOWN*((Dummy_996*Dummy_996) + (Dummy_997*Dummy_997) + (Dummy_998*Dummy_998));
-             const real_t Dummy_1007 = Dummy_1000*tmp_4_GREEN_DOWN + Dummy_1003*tmp_8_GREEN_DOWN + Dummy_1004*tmp_10_GREEN_DOWN + tmp_6_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1008 = Dummy_1001*tmp_4_GREEN_DOWN + Dummy_1003*tmp_6_GREEN_DOWN + Dummy_1005*tmp_10_GREEN_DOWN + tmp_8_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1009 = Dummy_1002*tmp_4_GREEN_DOWN + Dummy_1004*tmp_6_GREEN_DOWN + Dummy_1005*tmp_8_GREEN_DOWN + tmp_10_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+             const walberla::float64 Dummy_993 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_994 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_995 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 Dummy_996 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 Dummy_1001 = Dummy_1000*Dummy_993;
+             const walberla::float64 Dummy_1003 = Dummy_1000*Dummy_994;
+             const walberla::float64 Dummy_1005 = Dummy_1000*Dummy_995;
+             const walberla::float64 Dummy_1007 = Dummy_1000*Dummy_996;
+             const walberla::float64 Dummy_1011 = Dummy_1001*((Dummy_997*Dummy_997) + (Dummy_998*Dummy_998) + (Dummy_999*Dummy_999)) + Dummy_1002*Dummy_1003 + Dummy_1004*Dummy_1005 + Dummy_1006*Dummy_1007;
+             const walberla::float64 Dummy_1012 = Dummy_1001*Dummy_1002 + Dummy_1003*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)) + Dummy_1005*Dummy_1008 + Dummy_1007*Dummy_1009;
+             const walberla::float64 Dummy_1013 = Dummy_1001*Dummy_1004 + Dummy_1003*Dummy_1008 + Dummy_1005*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)) + Dummy_1007*Dummy_1010;
+             const walberla::float64 Dummy_1014 = Dummy_1001*Dummy_1006 + Dummy_1003*Dummy_1009 + Dummy_1005*Dummy_1010 + Dummy_1007*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1006 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1007 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1008 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1009 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1011 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1012 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1013 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1014 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 }
              }
           }
           if (-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2 >= 0)
           {
-             const real_t src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_WHITE_UP = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-             const real_t tmp_1_WHITE_UP = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-             const real_t tmp_2_WHITE_UP = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-             const real_t tmp_3_WHITE_UP = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-             const real_t tmp_4_WHITE_UP = src_dof_0*tmp_3_WHITE_UP;
-             const real_t tmp_5_WHITE_UP = jac_affine_inv_0_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_6_WHITE_UP = src_dof_1*tmp_3_WHITE_UP;
-             const real_t tmp_7_WHITE_UP = jac_affine_inv_1_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_8 = src_dof_2*tmp_3_WHITE_UP;
-             const real_t tmp_9 = jac_affine_inv_2_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_2_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_2_2_WHITE_UP*tmp_2_WHITE_UP;
-             const real_t tmp_10 = src_dof_3*tmp_3_WHITE_UP;
-             const real_t tmp_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
-             const real_t tmp_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-             const real_t tmp_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
-             const real_t elMatVec_0 = tmp_10*tmp_9 + tmp_4_WHITE_UP*((tmp_0_WHITE_UP*tmp_0_WHITE_UP) + (tmp_1_WHITE_UP*tmp_1_WHITE_UP) + (tmp_2_WHITE_UP*tmp_2_WHITE_UP)) + tmp_5_WHITE_UP*tmp_6_WHITE_UP + tmp_7_WHITE_UP*tmp_8;
-             const real_t elMatVec_1 = tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_4_WHITE_UP*tmp_5_WHITE_UP + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMatVec_2 = tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_4_WHITE_UP*tmp_7_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMatVec_3 = tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8 + tmp_4_WHITE_UP*tmp_9;
+             const walberla::float64 src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+             const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_5 = jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_7 = jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_9 = jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2;
+             const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+             const walberla::float64 tmp_kernel_op_11 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_12 = jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_13 = jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+             const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
              {
                 {
                    _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatVec_0 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
@@ -560,139 +553,139 @@ void P1ElementwiseDiffusion::apply_macro_3D( real_t * RESTRICT  _data_dst, real_
                    _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatVec_3 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t Dummy_1010 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1011 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1012 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1013 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t tmp_0_BLUE_UP = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-             const real_t tmp_1_BLUE_UP = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-             const real_t tmp_2_BLUE_UP = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-             const real_t tmp_3_BLUE_UP = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-             const real_t tmp_4_BLUE_UP = Dummy_1010*tmp_3_BLUE_UP;
-             const real_t tmp_5_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_6_BLUE_UP = Dummy_1011*tmp_3_BLUE_UP;
-             const real_t tmp_7_BLUE_UP = jac_affine_inv_1_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_8_BLUE_UP = Dummy_1012*tmp_3_BLUE_UP;
-             const real_t tmp_9_BLUE_UP = jac_affine_inv_2_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_2_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_2_2_BLUE_UP*tmp_2_BLUE_UP;
-             const real_t tmp_10_BLUE_UP = Dummy_1013*tmp_3_BLUE_UP;
-             const real_t tmp_11_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
-             const real_t tmp_12_BLUE_UP = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-             const real_t tmp_13_BLUE_UP = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
-             const real_t Dummy_1014 = tmp_10_BLUE_UP*tmp_9_BLUE_UP + tmp_4_BLUE_UP*((tmp_0_BLUE_UP*tmp_0_BLUE_UP) + (tmp_1_BLUE_UP*tmp_1_BLUE_UP) + (tmp_2_BLUE_UP*tmp_2_BLUE_UP)) + tmp_5_BLUE_UP*tmp_6_BLUE_UP + tmp_7_BLUE_UP*tmp_8_BLUE_UP;
-             const real_t Dummy_1015 = tmp_10_BLUE_UP*tmp_12_BLUE_UP + tmp_11_BLUE_UP*tmp_8_BLUE_UP + tmp_4_BLUE_UP*tmp_5_BLUE_UP + tmp_6_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_1016 = tmp_10_BLUE_UP*tmp_13_BLUE_UP + tmp_11_BLUE_UP*tmp_6_BLUE_UP + tmp_4_BLUE_UP*tmp_7_BLUE_UP + tmp_8_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_1017 = tmp_10_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)) + tmp_12_BLUE_UP*tmp_6_BLUE_UP + tmp_13_BLUE_UP*tmp_8_BLUE_UP + tmp_4_BLUE_UP*tmp_9_BLUE_UP;
+             const walberla::float64 Dummy_1015 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1016 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1017 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1018 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1019 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+             const walberla::float64 Dummy_1020 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+             const walberla::float64 Dummy_1021 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1022 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1023 = Dummy_1015*Dummy_1022;
+             const walberla::float64 Dummy_1024 = Dummy_1019*jac_affine_inv_0_0_BLUE_UP + Dummy_1020*jac_affine_inv_0_1_BLUE_UP + Dummy_1021*jac_affine_inv_0_2_BLUE_UP;
+             const walberla::float64 Dummy_1025 = Dummy_1016*Dummy_1022;
+             const walberla::float64 Dummy_1026 = Dummy_1019*jac_affine_inv_1_0_BLUE_UP + Dummy_1020*jac_affine_inv_1_1_BLUE_UP + Dummy_1021*jac_affine_inv_1_2_BLUE_UP;
+             const walberla::float64 Dummy_1027 = Dummy_1017*Dummy_1022;
+             const walberla::float64 Dummy_1028 = Dummy_1019*jac_affine_inv_2_0_BLUE_UP + Dummy_1020*jac_affine_inv_2_1_BLUE_UP + Dummy_1021*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1029 = Dummy_1018*Dummy_1022;
+             const walberla::float64 Dummy_1030 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP;
+             const walberla::float64 Dummy_1031 = jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1032 = jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1033 = Dummy_1023*((Dummy_1019*Dummy_1019) + (Dummy_1020*Dummy_1020) + (Dummy_1021*Dummy_1021)) + Dummy_1024*Dummy_1025 + Dummy_1026*Dummy_1027 + Dummy_1028*Dummy_1029;
+             const walberla::float64 Dummy_1034 = Dummy_1023*Dummy_1024 + Dummy_1025*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)) + Dummy_1027*Dummy_1030 + Dummy_1029*Dummy_1031;
+             const walberla::float64 Dummy_1035 = Dummy_1023*Dummy_1026 + Dummy_1025*Dummy_1030 + Dummy_1027*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)) + Dummy_1029*Dummy_1032;
+             const walberla::float64 Dummy_1036 = Dummy_1023*Dummy_1028 + Dummy_1025*Dummy_1031 + Dummy_1027*Dummy_1032 + Dummy_1029*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1014 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1015 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1016 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1017 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1033 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1034 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1035 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1036 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t Dummy_1018 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1019 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1020 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1021 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_BLUE_DOWN = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-             const real_t tmp_1_BLUE_DOWN = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-             const real_t tmp_2_BLUE_DOWN = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t tmp_3_BLUE_DOWN = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-             const real_t tmp_4_BLUE_DOWN = Dummy_1018*tmp_3_BLUE_DOWN;
-             const real_t tmp_5_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_6_BLUE_DOWN = Dummy_1019*tmp_3_BLUE_DOWN;
-             const real_t tmp_7_BLUE_DOWN = jac_affine_inv_1_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_8_BLUE_DOWN = Dummy_1020*tmp_3_BLUE_DOWN;
-             const real_t tmp_9_BLUE_DOWN = jac_affine_inv_2_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_2_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_2_2_BLUE_DOWN*tmp_2_BLUE_DOWN;
-             const real_t tmp_10_BLUE_DOWN = Dummy_1021*tmp_3_BLUE_DOWN;
-             const real_t tmp_11_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
-             const real_t tmp_12_BLUE_DOWN = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t tmp_13_BLUE_DOWN = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t Dummy_1022 = tmp_10_BLUE_DOWN*tmp_9_BLUE_DOWN + tmp_4_BLUE_DOWN*((tmp_0_BLUE_DOWN*tmp_0_BLUE_DOWN) + (tmp_1_BLUE_DOWN*tmp_1_BLUE_DOWN) + (tmp_2_BLUE_DOWN*tmp_2_BLUE_DOWN)) + tmp_5_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_7_BLUE_DOWN*tmp_8_BLUE_DOWN;
-             const real_t Dummy_1023 = tmp_10_BLUE_DOWN*tmp_12_BLUE_DOWN + tmp_11_BLUE_DOWN*tmp_8_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_5_BLUE_DOWN + tmp_6_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_1024 = tmp_10_BLUE_DOWN*tmp_13_BLUE_DOWN + tmp_11_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_7_BLUE_DOWN + tmp_8_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_1025 = tmp_10_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)) + tmp_12_BLUE_DOWN*tmp_6_BLUE_DOWN + tmp_13_BLUE_DOWN*tmp_8_BLUE_DOWN + tmp_4_BLUE_DOWN*tmp_9_BLUE_DOWN;
+             const walberla::float64 Dummy_1037 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1038 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1039 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1040 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1041 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+             const walberla::float64 Dummy_1042 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+             const walberla::float64 Dummy_1043 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1044 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1045 = Dummy_1037*Dummy_1044;
+             const walberla::float64 Dummy_1046 = Dummy_1041*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_0_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1047 = Dummy_1038*Dummy_1044;
+             const walberla::float64 Dummy_1048 = Dummy_1041*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_1_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1049 = Dummy_1039*Dummy_1044;
+             const walberla::float64 Dummy_1050 = Dummy_1041*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1042*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1043*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1051 = Dummy_1040*Dummy_1044;
+             const walberla::float64 Dummy_1052 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1053 = jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1054 = jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1055 = Dummy_1045*((Dummy_1041*Dummy_1041) + (Dummy_1042*Dummy_1042) + (Dummy_1043*Dummy_1043)) + Dummy_1046*Dummy_1047 + Dummy_1048*Dummy_1049 + Dummy_1050*Dummy_1051;
+             const walberla::float64 Dummy_1056 = Dummy_1045*Dummy_1046 + Dummy_1047*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)) + Dummy_1049*Dummy_1052 + Dummy_1051*Dummy_1053;
+             const walberla::float64 Dummy_1057 = Dummy_1045*Dummy_1048 + Dummy_1047*Dummy_1052 + Dummy_1049*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)) + Dummy_1051*Dummy_1054;
+             const walberla::float64 Dummy_1058 = Dummy_1045*Dummy_1050 + Dummy_1047*Dummy_1053 + Dummy_1049*Dummy_1054 + Dummy_1051*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1022 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1023 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1024 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1025 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1055 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1056 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1057 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1058 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t Dummy_1026 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1027 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1028 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1029 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t tmp_0_GREEN_UP = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-             const real_t tmp_1_GREEN_UP = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-             const real_t tmp_2_GREEN_UP = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-             const real_t tmp_3_GREEN_UP = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-             const real_t tmp_4_GREEN_UP = Dummy_1026*tmp_3_GREEN_UP;
-             const real_t tmp_5_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_6_GREEN_UP = Dummy_1027*tmp_3_GREEN_UP;
-             const real_t tmp_7_GREEN_UP = jac_affine_inv_1_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_8_GREEN_UP = Dummy_1028*tmp_3_GREEN_UP;
-             const real_t tmp_9_GREEN_UP = jac_affine_inv_2_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_2_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_2_2_GREEN_UP*tmp_2_GREEN_UP;
-             const real_t tmp_10_GREEN_UP = Dummy_1029*tmp_3_GREEN_UP;
-             const real_t tmp_11_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
-             const real_t tmp_12_GREEN_UP = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-             const real_t tmp_13_GREEN_UP = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
-             const real_t Dummy_1030 = tmp_10_GREEN_UP*tmp_9_GREEN_UP + tmp_4_GREEN_UP*((tmp_0_GREEN_UP*tmp_0_GREEN_UP) + (tmp_1_GREEN_UP*tmp_1_GREEN_UP) + (tmp_2_GREEN_UP*tmp_2_GREEN_UP)) + tmp_5_GREEN_UP*tmp_6_GREEN_UP + tmp_7_GREEN_UP*tmp_8_GREEN_UP;
-             const real_t Dummy_1031 = tmp_10_GREEN_UP*tmp_12_GREEN_UP + tmp_11_GREEN_UP*tmp_8_GREEN_UP + tmp_4_GREEN_UP*tmp_5_GREEN_UP + tmp_6_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_1032 = tmp_10_GREEN_UP*tmp_13_GREEN_UP + tmp_11_GREEN_UP*tmp_6_GREEN_UP + tmp_4_GREEN_UP*tmp_7_GREEN_UP + tmp_8_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_1033 = tmp_10_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)) + tmp_12_GREEN_UP*tmp_6_GREEN_UP + tmp_13_GREEN_UP*tmp_8_GREEN_UP + tmp_4_GREEN_UP*tmp_9_GREEN_UP;
+             const walberla::float64 Dummy_1059 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1060 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1061 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1062 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1063 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+             const walberla::float64 Dummy_1064 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+             const walberla::float64 Dummy_1065 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1066 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1067 = Dummy_1059*Dummy_1066;
+             const walberla::float64 Dummy_1068 = Dummy_1063*jac_affine_inv_0_0_GREEN_UP + Dummy_1064*jac_affine_inv_0_1_GREEN_UP + Dummy_1065*jac_affine_inv_0_2_GREEN_UP;
+             const walberla::float64 Dummy_1069 = Dummy_1060*Dummy_1066;
+             const walberla::float64 Dummy_1070 = Dummy_1063*jac_affine_inv_1_0_GREEN_UP + Dummy_1064*jac_affine_inv_1_1_GREEN_UP + Dummy_1065*jac_affine_inv_1_2_GREEN_UP;
+             const walberla::float64 Dummy_1071 = Dummy_1061*Dummy_1066;
+             const walberla::float64 Dummy_1072 = Dummy_1063*jac_affine_inv_2_0_GREEN_UP + Dummy_1064*jac_affine_inv_2_1_GREEN_UP + Dummy_1065*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1073 = Dummy_1062*Dummy_1066;
+             const walberla::float64 Dummy_1074 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP;
+             const walberla::float64 Dummy_1075 = jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1076 = jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1077 = Dummy_1067*((Dummy_1063*Dummy_1063) + (Dummy_1064*Dummy_1064) + (Dummy_1065*Dummy_1065)) + Dummy_1068*Dummy_1069 + Dummy_1070*Dummy_1071 + Dummy_1072*Dummy_1073;
+             const walberla::float64 Dummy_1078 = Dummy_1067*Dummy_1068 + Dummy_1069*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)) + Dummy_1071*Dummy_1074 + Dummy_1073*Dummy_1075;
+             const walberla::float64 Dummy_1079 = Dummy_1067*Dummy_1070 + Dummy_1069*Dummy_1074 + Dummy_1071*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)) + Dummy_1073*Dummy_1076;
+             const walberla::float64 Dummy_1080 = Dummy_1067*Dummy_1072 + Dummy_1069*Dummy_1075 + Dummy_1071*Dummy_1076 + Dummy_1073*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1030 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1031 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1032 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1033 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1077 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1078 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1079 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1080 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t Dummy_1034 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t Dummy_1035 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1036 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-             const real_t Dummy_1037 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-             const real_t tmp_0_GREEN_DOWN = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-             const real_t tmp_1_GREEN_DOWN = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-             const real_t tmp_2_GREEN_DOWN = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t tmp_3_GREEN_DOWN = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-             const real_t tmp_4_GREEN_DOWN = Dummy_1034*tmp_3_GREEN_DOWN;
-             const real_t tmp_5_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_6_GREEN_DOWN = Dummy_1035*tmp_3_GREEN_DOWN;
-             const real_t tmp_7_GREEN_DOWN = jac_affine_inv_1_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_8_GREEN_DOWN = Dummy_1036*tmp_3_GREEN_DOWN;
-             const real_t tmp_9_GREEN_DOWN = jac_affine_inv_2_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_2_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_2_2_GREEN_DOWN*tmp_2_GREEN_DOWN;
-             const real_t tmp_10_GREEN_DOWN = Dummy_1037*tmp_3_GREEN_DOWN;
-             const real_t tmp_11_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
-             const real_t tmp_12_GREEN_DOWN = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t tmp_13_GREEN_DOWN = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t Dummy_1038 = tmp_10_GREEN_DOWN*tmp_9_GREEN_DOWN + tmp_4_GREEN_DOWN*((tmp_0_GREEN_DOWN*tmp_0_GREEN_DOWN) + (tmp_1_GREEN_DOWN*tmp_1_GREEN_DOWN) + (tmp_2_GREEN_DOWN*tmp_2_GREEN_DOWN)) + tmp_5_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_7_GREEN_DOWN*tmp_8_GREEN_DOWN;
-             const real_t Dummy_1039 = tmp_10_GREEN_DOWN*tmp_12_GREEN_DOWN + tmp_11_GREEN_DOWN*tmp_8_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_5_GREEN_DOWN + tmp_6_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1040 = tmp_10_GREEN_DOWN*tmp_13_GREEN_DOWN + tmp_11_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_7_GREEN_DOWN + tmp_8_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1041 = tmp_10_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)) + tmp_12_GREEN_DOWN*tmp_6_GREEN_DOWN + tmp_13_GREEN_DOWN*tmp_8_GREEN_DOWN + tmp_4_GREEN_DOWN*tmp_9_GREEN_DOWN;
+             const walberla::float64 Dummy_1081 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1082 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1083 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+             const walberla::float64 Dummy_1084 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+             const walberla::float64 Dummy_1085 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+             const walberla::float64 Dummy_1086 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+             const walberla::float64 Dummy_1087 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1088 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1089 = Dummy_1081*Dummy_1088;
+             const walberla::float64 Dummy_1090 = Dummy_1085*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_0_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1091 = Dummy_1082*Dummy_1088;
+             const walberla::float64 Dummy_1092 = Dummy_1085*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_1_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1093 = Dummy_1083*Dummy_1088;
+             const walberla::float64 Dummy_1094 = Dummy_1085*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1086*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1087*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1095 = Dummy_1084*Dummy_1088;
+             const walberla::float64 Dummy_1096 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1097 = jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1098 = jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1099 = Dummy_1089*((Dummy_1085*Dummy_1085) + (Dummy_1086*Dummy_1086) + (Dummy_1087*Dummy_1087)) + Dummy_1090*Dummy_1091 + Dummy_1092*Dummy_1093 + Dummy_1094*Dummy_1095;
+             const walberla::float64 Dummy_1100 = Dummy_1089*Dummy_1090 + Dummy_1091*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)) + Dummy_1093*Dummy_1096 + Dummy_1095*Dummy_1097;
+             const walberla::float64 Dummy_1101 = Dummy_1089*Dummy_1092 + Dummy_1091*Dummy_1096 + Dummy_1093*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)) + Dummy_1095*Dummy_1098;
+             const walberla::float64 Dummy_1102 = Dummy_1089*Dummy_1094 + Dummy_1091*Dummy_1097 + Dummy_1093*Dummy_1098 + Dummy_1095*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1038 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1039 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1040 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1041 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1099 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1100 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1101 + _data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1102 + _data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
           } 
-          const real_t src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-          const real_t src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-          const real_t tmp_4_WHITE_UP = Dummy_1045*src_dof_0;
-          const real_t tmp_6_WHITE_UP = Dummy_1045*src_dof_1;
-          const real_t tmp_8 = Dummy_1045*src_dof_2;
-          const real_t tmp_10 = Dummy_1045*src_dof_3;
-          const real_t elMatVec_0 = Dummy_1046*tmp_6_WHITE_UP + Dummy_1047*tmp_8 + Dummy_1048*tmp_10 + tmp_4_WHITE_UP*((Dummy_1042*Dummy_1042) + (Dummy_1043*Dummy_1043) + (Dummy_1044*Dummy_1044));
-          const real_t elMatVec_1 = Dummy_1046*tmp_4_WHITE_UP + tmp_10*tmp_12 + tmp_11*tmp_8 + tmp_6_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-          const real_t elMatVec_2 = Dummy_1047*tmp_4_WHITE_UP + tmp_10*tmp_13 + tmp_11*tmp_6_WHITE_UP + tmp_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-          const real_t elMatVec_3 = Dummy_1048*tmp_4_WHITE_UP + tmp_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_12*tmp_6_WHITE_UP + tmp_13*tmp_8;
+          const walberla::float64 src_dof_0 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 src_dof_1 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+          const walberla::float64 src_dof_2 = _data_src[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 src_dof_3 = _data_src[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+          const walberla::float64 tmp_kernel_op_4 = src_dof_0*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_6 = src_dof_1*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_8 = src_dof_2*tmp_kernel_op_3;
+          const walberla::float64 tmp_kernel_op_10 = src_dof_3*tmp_kernel_op_3;
+          const walberla::float64 elMatVec_0 = tmp_kernel_op_10*tmp_kernel_op_9 + tmp_kernel_op_4*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2)) + tmp_kernel_op_5*tmp_kernel_op_6 + tmp_kernel_op_7*tmp_kernel_op_8;
+          const walberla::float64 elMatVec_1 = tmp_kernel_op_10*tmp_kernel_op_12 + tmp_kernel_op_11*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_5 + tmp_kernel_op_6*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+          const walberla::float64 elMatVec_2 = tmp_kernel_op_10*tmp_kernel_op_13 + tmp_kernel_op_11*tmp_kernel_op_6 + tmp_kernel_op_4*tmp_kernel_op_7 + tmp_kernel_op_8*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+          const walberla::float64 elMatVec_3 = tmp_kernel_op_10*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)) + tmp_kernel_op_12*tmp_kernel_op_6 + tmp_kernel_op_13*tmp_kernel_op_8 + tmp_kernel_op_4*tmp_kernel_op_9;
           {
              {
                 {
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
index 74d54ed1710a7a7f4e8a93b69dcb5262e0de3e7f..6efc0010e61c6bff65a4508c01e8322b6f861def 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,61 +56,57 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t Dummy_1552 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t elMatDiag_0 = Dummy_1552*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-       const real_t elMatDiag_1 = Dummy_1552*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t elMatDiag_2 = Dummy_1552*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
-       const real_t Dummy_1553 = abs_det_jac_affine_BLUE*0.50000000000000089;
-       const real_t Dummy_1554 = Dummy_1553*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
-       const real_t Dummy_1555 = Dummy_1553*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-       const real_t Dummy_1556 = Dummy_1553*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
-       const real_t Dummy_1557 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t Dummy_1558 = Dummy_1557*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-       const real_t Dummy_1559 = Dummy_1557*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t Dummy_1560 = Dummy_1557*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_GRAY*0.5;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 Dummy_1594 = abs_det_jac_affine_BLUE*0.5;
+       const walberla::float64 Dummy_1595 = Dummy_1594*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
+       const walberla::float64 Dummy_1596 = Dummy_1594*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+       const walberla::float64 Dummy_1597 = Dummy_1594*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
        for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
        {
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
@@ -124,18 +120,18 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_2D( real
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_1554 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_1555 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_1556 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = Dummy_1595 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = Dummy_1596 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = Dummy_1597 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
                 }
              }
           }
           {
              {
                 {
-                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1] = Dummy_1558 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
-                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))] = Dummy_1559 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
-                   _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1] = Dummy_1560 + _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
+                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1] = elMatDiag_0 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1];
+                   _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))];
+                   _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1] = elMatDiag_2 + _data_invDiag_[-ctr_1 + micro_edges_per_macro_edge + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - 1];
                 }
              }
           }
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 2ce1a8836e6259206d1dc44faa1c5c8de28bdb73..6f12ac189434bb871c70a32e9b73e108ed0b023c 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,320 +56,315 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t Dummy_1735 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t elMatDiag_0 = Dummy_1735*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-       const real_t elMatDiag_1 = Dummy_1735*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t elMatDiag_2 = Dummy_1735*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t elMatDiag_3 = Dummy_1735*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
-       const real_t Dummy_1736 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666666;
-       const real_t Dummy_1737 = Dummy_1736*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
-       const real_t Dummy_1738 = Dummy_1736*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-       const real_t Dummy_1739 = Dummy_1736*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-       const real_t Dummy_1740 = Dummy_1736*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
-       const real_t Dummy_1741 = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-       const real_t Dummy_1742 = Dummy_1741*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-       const real_t Dummy_1743 = Dummy_1741*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-       const real_t Dummy_1744 = Dummy_1741*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-       const real_t Dummy_1745 = Dummy_1741*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
-       const real_t Dummy_1746 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-       const real_t Dummy_1747 = Dummy_1746*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-       const real_t Dummy_1748 = Dummy_1746*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-       const real_t Dummy_1749 = Dummy_1746*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-       const real_t Dummy_1750 = Dummy_1746*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
-       const real_t Dummy_1751 = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-       const real_t Dummy_1752 = Dummy_1751*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-       const real_t Dummy_1753 = Dummy_1751*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-       const real_t Dummy_1754 = Dummy_1751*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-       const real_t Dummy_1755 = Dummy_1751*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
-       const real_t Dummy_1756 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-       const real_t Dummy_1757 = Dummy_1756*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-       const real_t Dummy_1758 = Dummy_1756*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-       const real_t Dummy_1759 = Dummy_1756*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-       const real_t Dummy_1760 = Dummy_1756*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
-       const real_t Dummy_1777 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1778 = Dummy_1777*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-       const real_t Dummy_1779 = Dummy_1777*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t Dummy_1780 = Dummy_1777*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t Dummy_1781 = Dummy_1777*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+       const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+       const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+       const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+       const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 Dummy_1772 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1773 = Dummy_1772*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
+       const walberla::float64 Dummy_1774 = Dummy_1772*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1775 = Dummy_1772*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1776 = Dummy_1772*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1777 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1778 = Dummy_1777*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+       const walberla::float64 Dummy_1779 = Dummy_1777*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+       const walberla::float64 Dummy_1780 = Dummy_1777*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+       const walberla::float64 Dummy_1781 = Dummy_1777*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+       const walberla::float64 Dummy_1782 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1783 = Dummy_1782*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+       const walberla::float64 Dummy_1784 = Dummy_1782*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1785 = Dummy_1782*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1786 = Dummy_1782*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1787 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1788 = Dummy_1787*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+       const walberla::float64 Dummy_1789 = Dummy_1787*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+       const walberla::float64 Dummy_1790 = Dummy_1787*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+       const walberla::float64 Dummy_1791 = Dummy_1787*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+       const walberla::float64 Dummy_1792 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1793 = Dummy_1792*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+       const walberla::float64 Dummy_1794 = Dummy_1792*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1795 = Dummy_1792*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1796 = Dummy_1792*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
        for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
        for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
        {
@@ -385,52 +380,52 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1737 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1738 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1739 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1740 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1773 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1774 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1775 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1776 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1742 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1743 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1744 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1745 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1778 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1779 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1780 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1781 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1747 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1748 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1749 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1750 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1783 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1784 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1785 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1786 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 }
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1752 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1753 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1754 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1755 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1788 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1789 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1790 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1791 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 }
              }
              {
                 {
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1757 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1758 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1759 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1760 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1793 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1794 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = Dummy_1795 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                   _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1796 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 }
              }
           }
           if (-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2 >= 0)
           {
-             const real_t tmp_0_WHITE_UP = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-             const real_t elMatDiag_0 = tmp_0_WHITE_UP*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-             const real_t elMatDiag_1 = tmp_0_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMatDiag_2 = tmp_0_WHITE_UP*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMatDiag_3 = tmp_0_WHITE_UP*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+             const walberla::float64 tmp_kernel_op_0 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+             const walberla::float64 elMatDiag_0 = tmp_kernel_op_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+             const walberla::float64 elMatDiag_1 = tmp_kernel_op_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMatDiag_2 = tmp_kernel_op_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMatDiag_3 = tmp_kernel_op_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
              {
                 {
                    _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatDiag_0 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
@@ -439,66 +434,66 @@ void P1ElementwiseDiffusion::computeInverseDiagonalOperatorValues_macro_3D( real
                    _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = elMatDiag_3 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t tmp_0_BLUE_UP = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-             const real_t Dummy_1761 = tmp_0_BLUE_UP*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-             const real_t Dummy_1762 = tmp_0_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_1763 = tmp_0_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_1764 = tmp_0_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+             const walberla::float64 Dummy_1797 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1798 = Dummy_1797*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+             const walberla::float64 Dummy_1799 = Dummy_1797*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+             const walberla::float64 Dummy_1800 = Dummy_1797*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+             const walberla::float64 Dummy_1801 = Dummy_1797*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1761 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1762 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1763 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1764 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1798 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1799 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1800 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1801 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t tmp_0_BLUE_DOWN = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-             const real_t Dummy_1765 = tmp_0_BLUE_DOWN*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-             const real_t Dummy_1766 = tmp_0_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_1767 = tmp_0_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_1768 = tmp_0_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1802 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1803 = Dummy_1802*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+             const walberla::float64 Dummy_1804 = Dummy_1802*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1805 = Dummy_1802*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1806 = Dummy_1802*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1765 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1766 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1767 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1768 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1803 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1804 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1805 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1806 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
-             const real_t tmp_0_GREEN_UP = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-             const real_t Dummy_1769 = tmp_0_GREEN_UP*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-             const real_t Dummy_1770 = tmp_0_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_1771 = tmp_0_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_1772 = tmp_0_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+             const walberla::float64 Dummy_1807 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1808 = Dummy_1807*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+             const walberla::float64 Dummy_1809 = Dummy_1807*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+             const walberla::float64 Dummy_1810 = Dummy_1807*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+             const walberla::float64 Dummy_1811 = Dummy_1807*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1769 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1770 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1771 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1772 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1808 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1809 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1810 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1811 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
-             const real_t tmp_0_GREEN_DOWN = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-             const real_t Dummy_1773 = tmp_0_GREEN_DOWN*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-             const real_t Dummy_1774 = tmp_0_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1775 = tmp_0_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1776 = tmp_0_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1812 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1813 = Dummy_1812*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+             const walberla::float64 Dummy_1814 = Dummy_1812*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1815 = Dummy_1812*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1816 = Dummy_1812*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1773 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1774 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1775 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1776 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1813 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1814 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1815 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2] = Dummy_1816 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2];
                 }
              }
           } 
           {
              {
                 {
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1778 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = Dummy_1779 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1780 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
-                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = Dummy_1781 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_0 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                   _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_2 + _data_invDiag_[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1];
+                   _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1] = elMatDiag_3 + _data_invDiag_[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 1];
                 }
              }
           }
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp
index 316b0908b5dddccbc831e1d66a9ae541caa36407..4e251e17afc97cdf614fd7c87a4771ca874cb11b 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp
@@ -56,94 +56,79 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t Dummy_1083 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_1084 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_1085 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t tmp_3 = Dummy_1085*(Dummy_1083*jac_affine_inv_0_0_GRAY + Dummy_1084*jac_affine_inv_0_1_GRAY);
-       const real_t tmp_4 = Dummy_1085*(Dummy_1083*jac_affine_inv_1_0_GRAY + Dummy_1084*jac_affine_inv_1_1_GRAY);
-       const real_t tmp_5 = Dummy_1085*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
-       const real_t elMat_0_0 = Dummy_1085*((Dummy_1083*Dummy_1083) + (Dummy_1084*Dummy_1084));
-       const real_t elMat_0_1 = tmp_3;
-       const real_t elMat_0_2 = tmp_4;
-       const real_t elMat_1_0 = tmp_3;
-       const real_t elMat_1_1 = Dummy_1085*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t elMat_1_2 = tmp_5;
-       const real_t elMat_2_0 = tmp_4;
-       const real_t elMat_2_1 = tmp_5;
-       const real_t elMat_2_2 = Dummy_1085*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
-       const real_t Dummy_1086 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_1087 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
-       const real_t Dummy_1088 = abs_det_jac_affine_BLUE*0.50000000000000089;
-       const real_t Dummy_1089 = Dummy_1088*(Dummy_1086*jac_affine_inv_0_0_BLUE + Dummy_1087*jac_affine_inv_0_1_BLUE);
-       const real_t Dummy_1090 = Dummy_1088*(Dummy_1086*jac_affine_inv_1_0_BLUE + Dummy_1087*jac_affine_inv_1_1_BLUE);
-       const real_t Dummy_1091 = Dummy_1088*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
-       const real_t Dummy_1092 = Dummy_1088*((Dummy_1086*Dummy_1086) + (Dummy_1087*Dummy_1087));
-       const real_t Dummy_1093 = Dummy_1089;
-       const real_t Dummy_1094 = Dummy_1090;
-       const real_t Dummy_1095 = Dummy_1089;
-       const real_t Dummy_1096 = Dummy_1088*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-       const real_t Dummy_1097 = Dummy_1091;
-       const real_t Dummy_1098 = Dummy_1090;
-       const real_t Dummy_1099 = Dummy_1091;
-       const real_t Dummy_1100 = Dummy_1088*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
-       const real_t Dummy_1101 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t Dummy_1102 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
-       const real_t Dummy_1103 = abs_det_jac_affine_GRAY*0.50000000000000089;
-       const real_t Dummy_1104 = Dummy_1103*(Dummy_1101*jac_affine_inv_0_0_GRAY + Dummy_1102*jac_affine_inv_0_1_GRAY);
-       const real_t Dummy_1105 = Dummy_1103*(Dummy_1101*jac_affine_inv_1_0_GRAY + Dummy_1102*jac_affine_inv_1_1_GRAY);
-       const real_t Dummy_1106 = Dummy_1103*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
-       const real_t Dummy_1107 = Dummy_1103*((Dummy_1101*Dummy_1101) + (Dummy_1102*Dummy_1102));
-       const real_t Dummy_1108 = Dummy_1104;
-       const real_t Dummy_1109 = Dummy_1105;
-       const real_t Dummy_1110 = Dummy_1104;
-       const real_t Dummy_1111 = Dummy_1103*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-       const real_t Dummy_1112 = Dummy_1106;
-       const real_t Dummy_1113 = Dummy_1105;
-       const real_t Dummy_1114 = Dummy_1106;
-       const real_t Dummy_1115 = Dummy_1103*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_kernel_op_2 = abs_det_jac_affine_GRAY*0.5;
+       const walberla::float64 tmp_kernel_op_3 = tmp_kernel_op_2*(jac_affine_inv_0_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_0_1_GRAY*tmp_kernel_op_1);
+       const walberla::float64 tmp_kernel_op_4 = tmp_kernel_op_2*(jac_affine_inv_1_0_GRAY*tmp_kernel_op_0 + jac_affine_inv_1_1_GRAY*tmp_kernel_op_1);
+       const walberla::float64 tmp_kernel_op_5 = tmp_kernel_op_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
+       const walberla::float64 elMat_0_0 = tmp_kernel_op_2*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1));
+       const walberla::float64 elMat_0_1 = tmp_kernel_op_3;
+       const walberla::float64 elMat_0_2 = tmp_kernel_op_4;
+       const walberla::float64 elMat_1_0 = tmp_kernel_op_3;
+       const walberla::float64 elMat_1_1 = tmp_kernel_op_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+       const walberla::float64 elMat_1_2 = tmp_kernel_op_5;
+       const walberla::float64 elMat_2_0 = tmp_kernel_op_4;
+       const walberla::float64 elMat_2_1 = tmp_kernel_op_5;
+       const walberla::float64 elMat_2_2 = tmp_kernel_op_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+       const walberla::float64 Dummy_1137 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_1138 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 Dummy_1139 = abs_det_jac_affine_BLUE*0.5;
+       const walberla::float64 Dummy_1140 = Dummy_1139*(Dummy_1137*jac_affine_inv_0_0_BLUE + Dummy_1138*jac_affine_inv_0_1_BLUE);
+       const walberla::float64 Dummy_1141 = Dummy_1139*(Dummy_1137*jac_affine_inv_1_0_BLUE + Dummy_1138*jac_affine_inv_1_1_BLUE);
+       const walberla::float64 Dummy_1142 = Dummy_1139*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
+       const walberla::float64 Dummy_1143 = Dummy_1139*((Dummy_1137*Dummy_1137) + (Dummy_1138*Dummy_1138));
+       const walberla::float64 Dummy_1144 = Dummy_1140;
+       const walberla::float64 Dummy_1145 = Dummy_1141;
+       const walberla::float64 Dummy_1146 = Dummy_1140;
+       const walberla::float64 Dummy_1147 = Dummy_1139*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+       const walberla::float64 Dummy_1148 = Dummy_1142;
+       const walberla::float64 Dummy_1149 = Dummy_1141;
+       const walberla::float64 Dummy_1150 = Dummy_1142;
+       const walberla::float64 Dummy_1151 = Dummy_1139*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
        for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
        {
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
@@ -153,7 +138,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 3 );
                    std::vector< uint_t > _data_colIdx( 3 );
-                   std::vector< real_t > _data_mat( 9 );
+                   std::vector< walberla::float64 > _data_mat( 9 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
@@ -166,15 +151,15 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(elMat_0_0));
-                   _data_mat[1] = ((real_t)(elMat_0_1));
-                   _data_mat[2] = ((real_t)(elMat_0_2));
-                   _data_mat[3] = ((real_t)(elMat_1_0));
-                   _data_mat[4] = ((real_t)(elMat_1_1));
-                   _data_mat[5] = ((real_t)(elMat_1_2));
-                   _data_mat[6] = ((real_t)(elMat_2_0));
-                   _data_mat[7] = ((real_t)(elMat_2_1));
-                   _data_mat[8] = ((real_t)(elMat_2_2));
+                   _data_mat[0] = ((walberla::float64)(elMat_0_0));
+                   _data_mat[1] = ((walberla::float64)(elMat_0_1));
+                   _data_mat[2] = ((walberla::float64)(elMat_0_2));
+                   _data_mat[3] = ((walberla::float64)(elMat_1_0));
+                   _data_mat[4] = ((walberla::float64)(elMat_1_1));
+                   _data_mat[5] = ((walberla::float64)(elMat_1_2));
+                   _data_mat[6] = ((walberla::float64)(elMat_2_0));
+                   _data_mat[7] = ((walberla::float64)(elMat_2_1));
+                   _data_mat[8] = ((walberla::float64)(elMat_2_2));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -185,7 +170,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 3 );
                    std::vector< uint_t > _data_colIdx( 3 );
-                   std::vector< real_t > _data_mat( 9 );
+                   std::vector< walberla::float64 > _data_mat( 9 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]));
@@ -198,15 +183,15 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1092));
-                   _data_mat[1] = ((real_t)(Dummy_1093));
-                   _data_mat[2] = ((real_t)(Dummy_1094));
-                   _data_mat[3] = ((real_t)(Dummy_1095));
-                   _data_mat[4] = ((real_t)(Dummy_1096));
-                   _data_mat[5] = ((real_t)(Dummy_1097));
-                   _data_mat[6] = ((real_t)(Dummy_1098));
-                   _data_mat[7] = ((real_t)(Dummy_1099));
-                   _data_mat[8] = ((real_t)(Dummy_1100));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1143));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1144));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1145));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1146));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1147));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1148));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1149));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1150));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1151));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -219,7 +204,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 3 );
                    std::vector< uint_t > _data_colIdx( 3 );
-                   std::vector< real_t > _data_mat( 9 );
+                   std::vector< walberla::float64 > _data_mat( 9 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_1*(micro_edges_per_macro_edge + 2) - ctr_1 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2))]));
@@ -232,15 +217,15 @@ void P1ElementwiseDiffusion::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1107));
-                   _data_mat[1] = ((real_t)(Dummy_1108));
-                   _data_mat[2] = ((real_t)(Dummy_1109));
-                   _data_mat[3] = ((real_t)(Dummy_1110));
-                   _data_mat[4] = ((real_t)(Dummy_1111));
-                   _data_mat[5] = ((real_t)(Dummy_1112));
-                   _data_mat[6] = ((real_t)(Dummy_1113));
-                   _data_mat[7] = ((real_t)(Dummy_1114));
-                   _data_mat[8] = ((real_t)(Dummy_1115));
+                   _data_mat[0] = ((walberla::float64)(elMat_0_0));
+                   _data_mat[1] = ((walberla::float64)(elMat_0_1));
+                   _data_mat[2] = ((walberla::float64)(elMat_0_2));
+                   _data_mat[3] = ((walberla::float64)(elMat_1_0));
+                   _data_mat[4] = ((walberla::float64)(elMat_1_1));
+                   _data_mat[5] = ((walberla::float64)(elMat_1_2));
+                   _data_mat[6] = ((walberla::float64)(elMat_2_0));
+                   _data_mat[7] = ((walberla::float64)(elMat_2_1));
+                   _data_mat[8] = ((walberla::float64)(elMat_2_2));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp b/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp
index 3ddca25ca69c29ce3fbba1601c03c60ec2b80499..f18061279d21567fa8e77ea666bd866321a5f930 100644
--- a/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp
+++ b/operators/diffusion/noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp
@@ -56,467 +56,441 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t Dummy_1290 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_1291 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_1292 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_1293 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1294 = Dummy_1293*(Dummy_1290*jac_affine_inv_0_0_WHITE_UP + Dummy_1291*jac_affine_inv_0_1_WHITE_UP + Dummy_1292*jac_affine_inv_0_2_WHITE_UP);
-       const real_t Dummy_1295 = Dummy_1293*(Dummy_1290*jac_affine_inv_1_0_WHITE_UP + Dummy_1291*jac_affine_inv_1_1_WHITE_UP + Dummy_1292*jac_affine_inv_1_2_WHITE_UP);
-       const real_t Dummy_1296 = Dummy_1293*(Dummy_1290*jac_affine_inv_2_0_WHITE_UP + Dummy_1291*jac_affine_inv_2_1_WHITE_UP + Dummy_1292*jac_affine_inv_2_2_WHITE_UP);
-       const real_t Dummy_1297 = Dummy_1293*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-       const real_t tmp_8 = Dummy_1293*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-       const real_t tmp_9 = Dummy_1293*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-       const real_t elMat_0_0 = Dummy_1293*((Dummy_1290*Dummy_1290) + (Dummy_1291*Dummy_1291) + (Dummy_1292*Dummy_1292));
-       const real_t elMat_0_1 = Dummy_1294;
-       const real_t elMat_0_2 = Dummy_1295;
-       const real_t elMat_0_3 = Dummy_1296;
-       const real_t elMat_1_0 = Dummy_1294;
-       const real_t elMat_1_1 = Dummy_1293*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t elMat_1_2 = Dummy_1297;
-       const real_t elMat_1_3 = tmp_8;
-       const real_t elMat_2_0 = Dummy_1295;
-       const real_t elMat_2_1 = Dummy_1297;
-       const real_t elMat_2_2 = Dummy_1293*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t elMat_2_3 = tmp_9;
-       const real_t elMat_3_0 = Dummy_1296;
-       const real_t elMat_3_1 = tmp_8;
-       const real_t elMat_3_2 = tmp_9;
-       const real_t elMat_3_3 = Dummy_1293*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
-       const real_t Dummy_1298 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_1299 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_1300 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
-       const real_t Dummy_1301 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666666;
-       const real_t Dummy_1302 = Dummy_1301*(Dummy_1298*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1299*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1300*jac_affine_inv_0_2_WHITE_DOWN);
-       const real_t Dummy_1303 = Dummy_1301*(Dummy_1298*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1299*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1300*jac_affine_inv_1_2_WHITE_DOWN);
-       const real_t Dummy_1304 = Dummy_1301*(Dummy_1298*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1299*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1300*jac_affine_inv_2_2_WHITE_DOWN);
-       const real_t Dummy_1305 = Dummy_1301*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
-       const real_t Dummy_1306 = Dummy_1301*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-       const real_t Dummy_1307 = Dummy_1301*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-       const real_t Dummy_1308 = Dummy_1301*((Dummy_1298*Dummy_1298) + (Dummy_1299*Dummy_1299) + (Dummy_1300*Dummy_1300));
-       const real_t Dummy_1309 = Dummy_1302;
-       const real_t Dummy_1310 = Dummy_1303;
-       const real_t Dummy_1311 = Dummy_1304;
-       const real_t Dummy_1312 = Dummy_1302;
-       const real_t Dummy_1313 = Dummy_1301*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-       const real_t Dummy_1314 = Dummy_1305;
-       const real_t Dummy_1315 = Dummy_1306;
-       const real_t Dummy_1316 = Dummy_1303;
-       const real_t Dummy_1317 = Dummy_1305;
-       const real_t Dummy_1318 = Dummy_1301*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-       const real_t Dummy_1319 = Dummy_1307;
-       const real_t Dummy_1320 = Dummy_1304;
-       const real_t Dummy_1321 = Dummy_1306;
-       const real_t Dummy_1322 = Dummy_1307;
-       const real_t Dummy_1323 = Dummy_1301*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
-       const real_t Dummy_1324 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_1325 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_1326 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-       const real_t Dummy_1327 = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-       const real_t Dummy_1328 = Dummy_1327*(Dummy_1324*jac_affine_inv_0_0_BLUE_UP + Dummy_1325*jac_affine_inv_0_1_BLUE_UP + Dummy_1326*jac_affine_inv_0_2_BLUE_UP);
-       const real_t Dummy_1329 = Dummy_1327*(Dummy_1324*jac_affine_inv_1_0_BLUE_UP + Dummy_1325*jac_affine_inv_1_1_BLUE_UP + Dummy_1326*jac_affine_inv_1_2_BLUE_UP);
-       const real_t Dummy_1330 = Dummy_1327*(Dummy_1324*jac_affine_inv_2_0_BLUE_UP + Dummy_1325*jac_affine_inv_2_1_BLUE_UP + Dummy_1326*jac_affine_inv_2_2_BLUE_UP);
-       const real_t Dummy_1331 = Dummy_1327*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
-       const real_t Dummy_1332 = Dummy_1327*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-       const real_t Dummy_1333 = Dummy_1327*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-       const real_t Dummy_1334 = Dummy_1327*((Dummy_1324*Dummy_1324) + (Dummy_1325*Dummy_1325) + (Dummy_1326*Dummy_1326));
-       const real_t Dummy_1335 = Dummy_1328;
-       const real_t Dummy_1336 = Dummy_1329;
-       const real_t Dummy_1337 = Dummy_1330;
-       const real_t Dummy_1338 = Dummy_1328;
-       const real_t Dummy_1339 = Dummy_1327*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-       const real_t Dummy_1340 = Dummy_1331;
-       const real_t Dummy_1341 = Dummy_1332;
-       const real_t Dummy_1342 = Dummy_1329;
-       const real_t Dummy_1343 = Dummy_1331;
-       const real_t Dummy_1344 = Dummy_1327*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-       const real_t Dummy_1345 = Dummy_1333;
-       const real_t Dummy_1346 = Dummy_1330;
-       const real_t Dummy_1347 = Dummy_1332;
-       const real_t Dummy_1348 = Dummy_1333;
-       const real_t Dummy_1349 = Dummy_1327*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
-       const real_t Dummy_1350 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_1351 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_1352 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-       const real_t Dummy_1353 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-       const real_t Dummy_1354 = Dummy_1353*(Dummy_1350*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1351*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1352*jac_affine_inv_0_2_BLUE_DOWN);
-       const real_t Dummy_1355 = Dummy_1353*(Dummy_1350*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1351*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1352*jac_affine_inv_1_2_BLUE_DOWN);
-       const real_t Dummy_1356 = Dummy_1353*(Dummy_1350*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1351*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1352*jac_affine_inv_2_2_BLUE_DOWN);
-       const real_t Dummy_1357 = Dummy_1353*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
-       const real_t Dummy_1358 = Dummy_1353*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-       const real_t Dummy_1359 = Dummy_1353*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-       const real_t Dummy_1360 = Dummy_1353*((Dummy_1350*Dummy_1350) + (Dummy_1351*Dummy_1351) + (Dummy_1352*Dummy_1352));
-       const real_t Dummy_1361 = Dummy_1354;
-       const real_t Dummy_1362 = Dummy_1355;
-       const real_t Dummy_1363 = Dummy_1356;
-       const real_t Dummy_1364 = Dummy_1354;
-       const real_t Dummy_1365 = Dummy_1353*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-       const real_t Dummy_1366 = Dummy_1357;
-       const real_t Dummy_1367 = Dummy_1358;
-       const real_t Dummy_1368 = Dummy_1355;
-       const real_t Dummy_1369 = Dummy_1357;
-       const real_t Dummy_1370 = Dummy_1353*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-       const real_t Dummy_1371 = Dummy_1359;
-       const real_t Dummy_1372 = Dummy_1356;
-       const real_t Dummy_1373 = Dummy_1358;
-       const real_t Dummy_1374 = Dummy_1359;
-       const real_t Dummy_1375 = Dummy_1353*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
-       const real_t Dummy_1376 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_1377 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_1378 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-       const real_t Dummy_1379 = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-       const real_t Dummy_1380 = Dummy_1379*(Dummy_1376*jac_affine_inv_0_0_GREEN_UP + Dummy_1377*jac_affine_inv_0_1_GREEN_UP + Dummy_1378*jac_affine_inv_0_2_GREEN_UP);
-       const real_t Dummy_1381 = Dummy_1379*(Dummy_1376*jac_affine_inv_1_0_GREEN_UP + Dummy_1377*jac_affine_inv_1_1_GREEN_UP + Dummy_1378*jac_affine_inv_1_2_GREEN_UP);
-       const real_t Dummy_1382 = Dummy_1379*(Dummy_1376*jac_affine_inv_2_0_GREEN_UP + Dummy_1377*jac_affine_inv_2_1_GREEN_UP + Dummy_1378*jac_affine_inv_2_2_GREEN_UP);
-       const real_t Dummy_1383 = Dummy_1379*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
-       const real_t Dummy_1384 = Dummy_1379*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-       const real_t Dummy_1385 = Dummy_1379*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-       const real_t Dummy_1386 = Dummy_1379*((Dummy_1376*Dummy_1376) + (Dummy_1377*Dummy_1377) + (Dummy_1378*Dummy_1378));
-       const real_t Dummy_1387 = Dummy_1380;
-       const real_t Dummy_1388 = Dummy_1381;
-       const real_t Dummy_1389 = Dummy_1382;
-       const real_t Dummy_1390 = Dummy_1380;
-       const real_t Dummy_1391 = Dummy_1379*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-       const real_t Dummy_1392 = Dummy_1383;
-       const real_t Dummy_1393 = Dummy_1384;
-       const real_t Dummy_1394 = Dummy_1381;
-       const real_t Dummy_1395 = Dummy_1383;
-       const real_t Dummy_1396 = Dummy_1379*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-       const real_t Dummy_1397 = Dummy_1385;
-       const real_t Dummy_1398 = Dummy_1382;
-       const real_t Dummy_1399 = Dummy_1384;
-       const real_t Dummy_1400 = Dummy_1385;
-       const real_t Dummy_1401 = Dummy_1379*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
-       const real_t Dummy_1402 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_1403 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_1404 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-       const real_t Dummy_1405 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-       const real_t Dummy_1406 = Dummy_1405*(Dummy_1402*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1403*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1404*jac_affine_inv_0_2_GREEN_DOWN);
-       const real_t Dummy_1407 = Dummy_1405*(Dummy_1402*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1403*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1404*jac_affine_inv_1_2_GREEN_DOWN);
-       const real_t Dummy_1408 = Dummy_1405*(Dummy_1402*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1403*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1404*jac_affine_inv_2_2_GREEN_DOWN);
-       const real_t Dummy_1409 = Dummy_1405*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
-       const real_t Dummy_1410 = Dummy_1405*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-       const real_t Dummy_1411 = Dummy_1405*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-       const real_t Dummy_1412 = Dummy_1405*((Dummy_1402*Dummy_1402) + (Dummy_1403*Dummy_1403) + (Dummy_1404*Dummy_1404));
-       const real_t Dummy_1413 = Dummy_1406;
-       const real_t Dummy_1414 = Dummy_1407;
-       const real_t Dummy_1415 = Dummy_1408;
-       const real_t Dummy_1416 = Dummy_1406;
-       const real_t Dummy_1417 = Dummy_1405*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-       const real_t Dummy_1418 = Dummy_1409;
-       const real_t Dummy_1419 = Dummy_1410;
-       const real_t Dummy_1420 = Dummy_1407;
-       const real_t Dummy_1421 = Dummy_1409;
-       const real_t Dummy_1422 = Dummy_1405*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-       const real_t Dummy_1423 = Dummy_1411;
-       const real_t Dummy_1424 = Dummy_1408;
-       const real_t Dummy_1425 = Dummy_1410;
-       const real_t Dummy_1426 = Dummy_1411;
-       const real_t Dummy_1427 = Dummy_1405*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
-       const real_t Dummy_1492 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t Dummy_1493 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t Dummy_1494 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-       const real_t Dummy_1495 = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-       const real_t Dummy_1496 = Dummy_1495*(Dummy_1492*jac_affine_inv_0_0_WHITE_UP + Dummy_1493*jac_affine_inv_0_1_WHITE_UP + Dummy_1494*jac_affine_inv_0_2_WHITE_UP);
-       const real_t Dummy_1497 = Dummy_1495*(Dummy_1492*jac_affine_inv_1_0_WHITE_UP + Dummy_1493*jac_affine_inv_1_1_WHITE_UP + Dummy_1494*jac_affine_inv_1_2_WHITE_UP);
-       const real_t Dummy_1498 = Dummy_1495*(Dummy_1492*jac_affine_inv_2_0_WHITE_UP + Dummy_1493*jac_affine_inv_2_1_WHITE_UP + Dummy_1494*jac_affine_inv_2_2_WHITE_UP);
-       const real_t Dummy_1499 = Dummy_1495*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-       const real_t Dummy_1500 = Dummy_1495*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-       const real_t Dummy_1501 = Dummy_1495*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-       const real_t Dummy_1502 = Dummy_1495*((Dummy_1492*Dummy_1492) + (Dummy_1493*Dummy_1493) + (Dummy_1494*Dummy_1494));
-       const real_t Dummy_1503 = Dummy_1496;
-       const real_t Dummy_1504 = Dummy_1497;
-       const real_t Dummy_1505 = Dummy_1498;
-       const real_t Dummy_1506 = Dummy_1496;
-       const real_t Dummy_1507 = Dummy_1495*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-       const real_t Dummy_1508 = Dummy_1499;
-       const real_t Dummy_1509 = Dummy_1500;
-       const real_t Dummy_1510 = Dummy_1497;
-       const real_t Dummy_1511 = Dummy_1499;
-       const real_t Dummy_1512 = Dummy_1495*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-       const real_t Dummy_1513 = Dummy_1501;
-       const real_t Dummy_1514 = Dummy_1498;
-       const real_t Dummy_1515 = Dummy_1500;
-       const real_t Dummy_1516 = Dummy_1501;
-       const real_t Dummy_1517 = Dummy_1495*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+       const walberla::float64 tmp_kernel_op_4 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2);
+       const walberla::float64 tmp_kernel_op_5 = tmp_kernel_op_3*(jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2);
+       const walberla::float64 tmp_kernel_op_6 = tmp_kernel_op_3*(jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2);
+       const walberla::float64 tmp_kernel_op_7 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_8 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+       const walberla::float64 tmp_kernel_op_9 = tmp_kernel_op_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+       const walberla::float64 elMat_0_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2));
+       const walberla::float64 elMat_0_1 = tmp_kernel_op_4;
+       const walberla::float64 elMat_0_2 = tmp_kernel_op_5;
+       const walberla::float64 elMat_0_3 = tmp_kernel_op_6;
+       const walberla::float64 elMat_1_0 = tmp_kernel_op_4;
+       const walberla::float64 elMat_1_1 = tmp_kernel_op_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+       const walberla::float64 elMat_1_2 = tmp_kernel_op_7;
+       const walberla::float64 elMat_1_3 = tmp_kernel_op_8;
+       const walberla::float64 elMat_2_0 = tmp_kernel_op_5;
+       const walberla::float64 elMat_2_1 = tmp_kernel_op_7;
+       const walberla::float64 elMat_2_2 = tmp_kernel_op_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+       const walberla::float64 elMat_2_3 = tmp_kernel_op_9;
+       const walberla::float64 elMat_3_0 = tmp_kernel_op_6;
+       const walberla::float64 elMat_3_1 = tmp_kernel_op_8;
+       const walberla::float64 elMat_3_2 = tmp_kernel_op_9;
+       const walberla::float64 elMat_3_3 = tmp_kernel_op_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+       const walberla::float64 Dummy_1326 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_1327 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_1328 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 Dummy_1329 = abs_det_jac_affine_WHITE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1330 = Dummy_1329*(Dummy_1326*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1327*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1328*jac_affine_inv_0_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1331 = Dummy_1329*(Dummy_1326*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1327*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1328*jac_affine_inv_1_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1332 = Dummy_1329*(Dummy_1326*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1327*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1328*jac_affine_inv_2_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1333 = Dummy_1329*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1334 = Dummy_1329*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1335 = Dummy_1329*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+       const walberla::float64 Dummy_1336 = Dummy_1329*((Dummy_1326*Dummy_1326) + (Dummy_1327*Dummy_1327) + (Dummy_1328*Dummy_1328));
+       const walberla::float64 Dummy_1337 = Dummy_1330;
+       const walberla::float64 Dummy_1338 = Dummy_1331;
+       const walberla::float64 Dummy_1339 = Dummy_1332;
+       const walberla::float64 Dummy_1340 = Dummy_1330;
+       const walberla::float64 Dummy_1341 = Dummy_1329*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1342 = Dummy_1333;
+       const walberla::float64 Dummy_1343 = Dummy_1334;
+       const walberla::float64 Dummy_1344 = Dummy_1331;
+       const walberla::float64 Dummy_1345 = Dummy_1333;
+       const walberla::float64 Dummy_1346 = Dummy_1329*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1347 = Dummy_1335;
+       const walberla::float64 Dummy_1348 = Dummy_1332;
+       const walberla::float64 Dummy_1349 = Dummy_1334;
+       const walberla::float64 Dummy_1350 = Dummy_1335;
+       const walberla::float64 Dummy_1351 = Dummy_1329*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+       const walberla::float64 Dummy_1352 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_1353 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_1354 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 Dummy_1355 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1356 = Dummy_1355*(Dummy_1352*jac_affine_inv_0_0_BLUE_UP + Dummy_1353*jac_affine_inv_0_1_BLUE_UP + Dummy_1354*jac_affine_inv_0_2_BLUE_UP);
+       const walberla::float64 Dummy_1357 = Dummy_1355*(Dummy_1352*jac_affine_inv_1_0_BLUE_UP + Dummy_1353*jac_affine_inv_1_1_BLUE_UP + Dummy_1354*jac_affine_inv_1_2_BLUE_UP);
+       const walberla::float64 Dummy_1358 = Dummy_1355*(Dummy_1352*jac_affine_inv_2_0_BLUE_UP + Dummy_1353*jac_affine_inv_2_1_BLUE_UP + Dummy_1354*jac_affine_inv_2_2_BLUE_UP);
+       const walberla::float64 Dummy_1359 = Dummy_1355*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
+       const walberla::float64 Dummy_1360 = Dummy_1355*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+       const walberla::float64 Dummy_1361 = Dummy_1355*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+       const walberla::float64 Dummy_1362 = Dummy_1355*((Dummy_1352*Dummy_1352) + (Dummy_1353*Dummy_1353) + (Dummy_1354*Dummy_1354));
+       const walberla::float64 Dummy_1363 = Dummy_1356;
+       const walberla::float64 Dummy_1364 = Dummy_1357;
+       const walberla::float64 Dummy_1365 = Dummy_1358;
+       const walberla::float64 Dummy_1366 = Dummy_1356;
+       const walberla::float64 Dummy_1367 = Dummy_1355*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+       const walberla::float64 Dummy_1368 = Dummy_1359;
+       const walberla::float64 Dummy_1369 = Dummy_1360;
+       const walberla::float64 Dummy_1370 = Dummy_1357;
+       const walberla::float64 Dummy_1371 = Dummy_1359;
+       const walberla::float64 Dummy_1372 = Dummy_1355*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+       const walberla::float64 Dummy_1373 = Dummy_1361;
+       const walberla::float64 Dummy_1374 = Dummy_1358;
+       const walberla::float64 Dummy_1375 = Dummy_1360;
+       const walberla::float64 Dummy_1376 = Dummy_1361;
+       const walberla::float64 Dummy_1377 = Dummy_1355*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+       const walberla::float64 Dummy_1378 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_1379 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_1380 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 Dummy_1381 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1382 = Dummy_1381*(Dummy_1378*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1379*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1380*jac_affine_inv_0_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1383 = Dummy_1381*(Dummy_1378*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1379*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1380*jac_affine_inv_1_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1384 = Dummy_1381*(Dummy_1378*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1379*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1380*jac_affine_inv_2_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1385 = Dummy_1381*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1386 = Dummy_1381*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1387 = Dummy_1381*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+       const walberla::float64 Dummy_1388 = Dummy_1381*((Dummy_1378*Dummy_1378) + (Dummy_1379*Dummy_1379) + (Dummy_1380*Dummy_1380));
+       const walberla::float64 Dummy_1389 = Dummy_1382;
+       const walberla::float64 Dummy_1390 = Dummy_1383;
+       const walberla::float64 Dummy_1391 = Dummy_1384;
+       const walberla::float64 Dummy_1392 = Dummy_1382;
+       const walberla::float64 Dummy_1393 = Dummy_1381*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1394 = Dummy_1385;
+       const walberla::float64 Dummy_1395 = Dummy_1386;
+       const walberla::float64 Dummy_1396 = Dummy_1383;
+       const walberla::float64 Dummy_1397 = Dummy_1385;
+       const walberla::float64 Dummy_1398 = Dummy_1381*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1399 = Dummy_1387;
+       const walberla::float64 Dummy_1400 = Dummy_1384;
+       const walberla::float64 Dummy_1401 = Dummy_1386;
+       const walberla::float64 Dummy_1402 = Dummy_1387;
+       const walberla::float64 Dummy_1403 = Dummy_1381*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+       const walberla::float64 Dummy_1404 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_1405 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_1406 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 Dummy_1407 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+       const walberla::float64 Dummy_1408 = Dummy_1407*(Dummy_1404*jac_affine_inv_0_0_GREEN_UP + Dummy_1405*jac_affine_inv_0_1_GREEN_UP + Dummy_1406*jac_affine_inv_0_2_GREEN_UP);
+       const walberla::float64 Dummy_1409 = Dummy_1407*(Dummy_1404*jac_affine_inv_1_0_GREEN_UP + Dummy_1405*jac_affine_inv_1_1_GREEN_UP + Dummy_1406*jac_affine_inv_1_2_GREEN_UP);
+       const walberla::float64 Dummy_1410 = Dummy_1407*(Dummy_1404*jac_affine_inv_2_0_GREEN_UP + Dummy_1405*jac_affine_inv_2_1_GREEN_UP + Dummy_1406*jac_affine_inv_2_2_GREEN_UP);
+       const walberla::float64 Dummy_1411 = Dummy_1407*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
+       const walberla::float64 Dummy_1412 = Dummy_1407*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+       const walberla::float64 Dummy_1413 = Dummy_1407*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+       const walberla::float64 Dummy_1414 = Dummy_1407*((Dummy_1404*Dummy_1404) + (Dummy_1405*Dummy_1405) + (Dummy_1406*Dummy_1406));
+       const walberla::float64 Dummy_1415 = Dummy_1408;
+       const walberla::float64 Dummy_1416 = Dummy_1409;
+       const walberla::float64 Dummy_1417 = Dummy_1410;
+       const walberla::float64 Dummy_1418 = Dummy_1408;
+       const walberla::float64 Dummy_1419 = Dummy_1407*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+       const walberla::float64 Dummy_1420 = Dummy_1411;
+       const walberla::float64 Dummy_1421 = Dummy_1412;
+       const walberla::float64 Dummy_1422 = Dummy_1409;
+       const walberla::float64 Dummy_1423 = Dummy_1411;
+       const walberla::float64 Dummy_1424 = Dummy_1407*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+       const walberla::float64 Dummy_1425 = Dummy_1413;
+       const walberla::float64 Dummy_1426 = Dummy_1410;
+       const walberla::float64 Dummy_1427 = Dummy_1412;
+       const walberla::float64 Dummy_1428 = Dummy_1413;
+       const walberla::float64 Dummy_1429 = Dummy_1407*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+       const walberla::float64 Dummy_1430 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_1431 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_1432 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 Dummy_1433 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+       const walberla::float64 Dummy_1434 = Dummy_1433*(Dummy_1430*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1431*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1432*jac_affine_inv_0_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1435 = Dummy_1433*(Dummy_1430*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1431*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1432*jac_affine_inv_1_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1436 = Dummy_1433*(Dummy_1430*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1431*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1432*jac_affine_inv_2_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1437 = Dummy_1433*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1438 = Dummy_1433*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1439 = Dummy_1433*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+       const walberla::float64 Dummy_1440 = Dummy_1433*((Dummy_1430*Dummy_1430) + (Dummy_1431*Dummy_1431) + (Dummy_1432*Dummy_1432));
+       const walberla::float64 Dummy_1441 = Dummy_1434;
+       const walberla::float64 Dummy_1442 = Dummy_1435;
+       const walberla::float64 Dummy_1443 = Dummy_1436;
+       const walberla::float64 Dummy_1444 = Dummy_1434;
+       const walberla::float64 Dummy_1445 = Dummy_1433*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1446 = Dummy_1437;
+       const walberla::float64 Dummy_1447 = Dummy_1438;
+       const walberla::float64 Dummy_1448 = Dummy_1435;
+       const walberla::float64 Dummy_1449 = Dummy_1437;
+       const walberla::float64 Dummy_1450 = Dummy_1433*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+       const walberla::float64 Dummy_1451 = Dummy_1439;
+       const walberla::float64 Dummy_1452 = Dummy_1436;
+       const walberla::float64 Dummy_1453 = Dummy_1438;
+       const walberla::float64 Dummy_1454 = Dummy_1439;
+       const walberla::float64 Dummy_1455 = Dummy_1433*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
        for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
        for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
        {
@@ -527,7 +501,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -542,22 +516,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(elMat_0_0));
-                   _data_mat[1] = ((real_t)(elMat_0_1));
-                   _data_mat[2] = ((real_t)(elMat_0_2));
-                   _data_mat[3] = ((real_t)(elMat_0_3));
-                   _data_mat[4] = ((real_t)(elMat_1_0));
-                   _data_mat[5] = ((real_t)(elMat_1_1));
-                   _data_mat[6] = ((real_t)(elMat_1_2));
-                   _data_mat[7] = ((real_t)(elMat_1_3));
-                   _data_mat[8] = ((real_t)(elMat_2_0));
-                   _data_mat[9] = ((real_t)(elMat_2_1));
-                   _data_mat[10] = ((real_t)(elMat_2_2));
-                   _data_mat[11] = ((real_t)(elMat_2_3));
-                   _data_mat[12] = ((real_t)(elMat_3_0));
-                   _data_mat[13] = ((real_t)(elMat_3_1));
-                   _data_mat[14] = ((real_t)(elMat_3_2));
-                   _data_mat[15] = ((real_t)(elMat_3_3));
+                   _data_mat[0] = ((walberla::float64)(elMat_0_0));
+                   _data_mat[1] = ((walberla::float64)(elMat_0_1));
+                   _data_mat[2] = ((walberla::float64)(elMat_0_2));
+                   _data_mat[3] = ((walberla::float64)(elMat_0_3));
+                   _data_mat[4] = ((walberla::float64)(elMat_1_0));
+                   _data_mat[5] = ((walberla::float64)(elMat_1_1));
+                   _data_mat[6] = ((walberla::float64)(elMat_1_2));
+                   _data_mat[7] = ((walberla::float64)(elMat_1_3));
+                   _data_mat[8] = ((walberla::float64)(elMat_2_0));
+                   _data_mat[9] = ((walberla::float64)(elMat_2_1));
+                   _data_mat[10] = ((walberla::float64)(elMat_2_2));
+                   _data_mat[11] = ((walberla::float64)(elMat_2_3));
+                   _data_mat[12] = ((walberla::float64)(elMat_3_0));
+                   _data_mat[13] = ((walberla::float64)(elMat_3_1));
+                   _data_mat[14] = ((walberla::float64)(elMat_3_2));
+                   _data_mat[15] = ((walberla::float64)(elMat_3_3));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -568,7 +542,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -583,22 +557,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1308));
-                   _data_mat[1] = ((real_t)(Dummy_1309));
-                   _data_mat[2] = ((real_t)(Dummy_1310));
-                   _data_mat[3] = ((real_t)(Dummy_1311));
-                   _data_mat[4] = ((real_t)(Dummy_1312));
-                   _data_mat[5] = ((real_t)(Dummy_1313));
-                   _data_mat[6] = ((real_t)(Dummy_1314));
-                   _data_mat[7] = ((real_t)(Dummy_1315));
-                   _data_mat[8] = ((real_t)(Dummy_1316));
-                   _data_mat[9] = ((real_t)(Dummy_1317));
-                   _data_mat[10] = ((real_t)(Dummy_1318));
-                   _data_mat[11] = ((real_t)(Dummy_1319));
-                   _data_mat[12] = ((real_t)(Dummy_1320));
-                   _data_mat[13] = ((real_t)(Dummy_1321));
-                   _data_mat[14] = ((real_t)(Dummy_1322));
-                   _data_mat[15] = ((real_t)(Dummy_1323));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1336));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1337));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1338));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1339));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1340));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1341));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1342));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1343));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1344));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1345));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1346));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1347));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1348));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1349));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1350));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1351));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -609,7 +583,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -624,22 +598,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1334));
-                   _data_mat[1] = ((real_t)(Dummy_1335));
-                   _data_mat[2] = ((real_t)(Dummy_1336));
-                   _data_mat[3] = ((real_t)(Dummy_1337));
-                   _data_mat[4] = ((real_t)(Dummy_1338));
-                   _data_mat[5] = ((real_t)(Dummy_1339));
-                   _data_mat[6] = ((real_t)(Dummy_1340));
-                   _data_mat[7] = ((real_t)(Dummy_1341));
-                   _data_mat[8] = ((real_t)(Dummy_1342));
-                   _data_mat[9] = ((real_t)(Dummy_1343));
-                   _data_mat[10] = ((real_t)(Dummy_1344));
-                   _data_mat[11] = ((real_t)(Dummy_1345));
-                   _data_mat[12] = ((real_t)(Dummy_1346));
-                   _data_mat[13] = ((real_t)(Dummy_1347));
-                   _data_mat[14] = ((real_t)(Dummy_1348));
-                   _data_mat[15] = ((real_t)(Dummy_1349));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1362));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1363));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1364));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1365));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1366));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1367));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1368));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1369));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1370));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1371));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1372));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1373));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1374));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1375));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1376));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1377));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -650,7 +624,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]));
@@ -665,22 +639,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1360));
-                   _data_mat[1] = ((real_t)(Dummy_1361));
-                   _data_mat[2] = ((real_t)(Dummy_1362));
-                   _data_mat[3] = ((real_t)(Dummy_1363));
-                   _data_mat[4] = ((real_t)(Dummy_1364));
-                   _data_mat[5] = ((real_t)(Dummy_1365));
-                   _data_mat[6] = ((real_t)(Dummy_1366));
-                   _data_mat[7] = ((real_t)(Dummy_1367));
-                   _data_mat[8] = ((real_t)(Dummy_1368));
-                   _data_mat[9] = ((real_t)(Dummy_1369));
-                   _data_mat[10] = ((real_t)(Dummy_1370));
-                   _data_mat[11] = ((real_t)(Dummy_1371));
-                   _data_mat[12] = ((real_t)(Dummy_1372));
-                   _data_mat[13] = ((real_t)(Dummy_1373));
-                   _data_mat[14] = ((real_t)(Dummy_1374));
-                   _data_mat[15] = ((real_t)(Dummy_1375));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1388));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1389));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1390));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1391));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1392));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1393));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1394));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1395));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1396));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1397));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1398));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1399));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1400));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1401));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1402));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1403));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -691,7 +665,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -706,22 +680,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1386));
-                   _data_mat[1] = ((real_t)(Dummy_1387));
-                   _data_mat[2] = ((real_t)(Dummy_1388));
-                   _data_mat[3] = ((real_t)(Dummy_1389));
-                   _data_mat[4] = ((real_t)(Dummy_1390));
-                   _data_mat[5] = ((real_t)(Dummy_1391));
-                   _data_mat[6] = ((real_t)(Dummy_1392));
-                   _data_mat[7] = ((real_t)(Dummy_1393));
-                   _data_mat[8] = ((real_t)(Dummy_1394));
-                   _data_mat[9] = ((real_t)(Dummy_1395));
-                   _data_mat[10] = ((real_t)(Dummy_1396));
-                   _data_mat[11] = ((real_t)(Dummy_1397));
-                   _data_mat[12] = ((real_t)(Dummy_1398));
-                   _data_mat[13] = ((real_t)(Dummy_1399));
-                   _data_mat[14] = ((real_t)(Dummy_1400));
-                   _data_mat[15] = ((real_t)(Dummy_1401));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1414));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1415));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1416));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1417));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1418));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1419));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1420));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1421));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1422));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1423));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1424));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1425));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1426));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1427));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1428));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1429));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -732,7 +706,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -747,22 +721,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1412));
-                   _data_mat[1] = ((real_t)(Dummy_1413));
-                   _data_mat[2] = ((real_t)(Dummy_1414));
-                   _data_mat[3] = ((real_t)(Dummy_1415));
-                   _data_mat[4] = ((real_t)(Dummy_1416));
-                   _data_mat[5] = ((real_t)(Dummy_1417));
-                   _data_mat[6] = ((real_t)(Dummy_1418));
-                   _data_mat[7] = ((real_t)(Dummy_1419));
-                   _data_mat[8] = ((real_t)(Dummy_1420));
-                   _data_mat[9] = ((real_t)(Dummy_1421));
-                   _data_mat[10] = ((real_t)(Dummy_1422));
-                   _data_mat[11] = ((real_t)(Dummy_1423));
-                   _data_mat[12] = ((real_t)(Dummy_1424));
-                   _data_mat[13] = ((real_t)(Dummy_1425));
-                   _data_mat[14] = ((real_t)(Dummy_1426));
-                   _data_mat[15] = ((real_t)(Dummy_1427));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1440));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1441));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1442));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1443));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1444));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1445));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1446));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1447));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1448));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1449));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1450));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1451));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1452));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1453));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1454));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1455));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -771,38 +745,38 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
           }
           if (-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2 >= 0)
           {
-             const real_t tmp_0_WHITE_UP = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-             const real_t tmp_1_WHITE_UP = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-             const real_t tmp_2_WHITE_UP = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
-             const real_t tmp_3_WHITE_UP = abs_det_jac_affine_WHITE_UP*0.16666666666666666;
-             const real_t tmp_4_WHITE_UP = tmp_3_WHITE_UP*(jac_affine_inv_0_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*tmp_2_WHITE_UP);
-             const real_t tmp_5_WHITE_UP = tmp_3_WHITE_UP*(jac_affine_inv_1_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*tmp_2_WHITE_UP);
-             const real_t tmp_6_WHITE_UP = tmp_3_WHITE_UP*(jac_affine_inv_2_0_WHITE_UP*tmp_0_WHITE_UP + jac_affine_inv_2_1_WHITE_UP*tmp_1_WHITE_UP + jac_affine_inv_2_2_WHITE_UP*tmp_2_WHITE_UP);
-             const real_t tmp_7_WHITE_UP = tmp_3_WHITE_UP*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-             const real_t tmp_8 = tmp_3_WHITE_UP*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-             const real_t tmp_9 = tmp_3_WHITE_UP*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-             const real_t elMat_0_0 = tmp_3_WHITE_UP*((tmp_0_WHITE_UP*tmp_0_WHITE_UP) + (tmp_1_WHITE_UP*tmp_1_WHITE_UP) + (tmp_2_WHITE_UP*tmp_2_WHITE_UP));
-             const real_t elMat_0_1 = tmp_4_WHITE_UP;
-             const real_t elMat_0_2 = tmp_5_WHITE_UP;
-             const real_t elMat_0_3 = tmp_6_WHITE_UP;
-             const real_t elMat_1_0 = tmp_4_WHITE_UP;
-             const real_t elMat_1_1 = tmp_3_WHITE_UP*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-             const real_t elMat_1_2 = tmp_7_WHITE_UP;
-             const real_t elMat_1_3 = tmp_8;
-             const real_t elMat_2_0 = tmp_5_WHITE_UP;
-             const real_t elMat_2_1 = tmp_7_WHITE_UP;
-             const real_t elMat_2_2 = tmp_3_WHITE_UP*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-             const real_t elMat_2_3 = tmp_9;
-             const real_t elMat_3_0 = tmp_6_WHITE_UP;
-             const real_t elMat_3_1 = tmp_8;
-             const real_t elMat_3_2 = tmp_9;
-             const real_t elMat_3_3 = tmp_3_WHITE_UP*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+             const walberla::float64 tmp_kernel_op_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+             const walberla::float64 tmp_kernel_op_3 = abs_det_jac_affine_WHITE_UP*0.16666666666666663;
+             const walberla::float64 tmp_kernel_op_4 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_0_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_0_2_WHITE_UP*tmp_kernel_op_2);
+             const walberla::float64 tmp_kernel_op_5 = tmp_kernel_op_3*(jac_affine_inv_1_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_1_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_1_2_WHITE_UP*tmp_kernel_op_2);
+             const walberla::float64 tmp_kernel_op_6 = tmp_kernel_op_3*(jac_affine_inv_2_0_WHITE_UP*tmp_kernel_op_0 + jac_affine_inv_2_1_WHITE_UP*tmp_kernel_op_1 + jac_affine_inv_2_2_WHITE_UP*tmp_kernel_op_2);
+             const walberla::float64 tmp_kernel_op_7 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
+             const walberla::float64 tmp_kernel_op_8 = tmp_kernel_op_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+             const walberla::float64 tmp_kernel_op_9 = tmp_kernel_op_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+             const walberla::float64 elMat_0_0 = tmp_kernel_op_3*((tmp_kernel_op_0*tmp_kernel_op_0) + (tmp_kernel_op_1*tmp_kernel_op_1) + (tmp_kernel_op_2*tmp_kernel_op_2));
+             const walberla::float64 elMat_0_1 = tmp_kernel_op_4;
+             const walberla::float64 elMat_0_2 = tmp_kernel_op_5;
+             const walberla::float64 elMat_0_3 = tmp_kernel_op_6;
+             const walberla::float64 elMat_1_0 = tmp_kernel_op_4;
+             const walberla::float64 elMat_1_1 = tmp_kernel_op_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+             const walberla::float64 elMat_1_2 = tmp_kernel_op_7;
+             const walberla::float64 elMat_1_3 = tmp_kernel_op_8;
+             const walberla::float64 elMat_2_0 = tmp_kernel_op_5;
+             const walberla::float64 elMat_2_1 = tmp_kernel_op_7;
+             const walberla::float64 elMat_2_2 = tmp_kernel_op_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+             const walberla::float64 elMat_2_3 = tmp_kernel_op_9;
+             const walberla::float64 elMat_3_0 = tmp_kernel_op_6;
+             const walberla::float64 elMat_3_1 = tmp_kernel_op_8;
+             const walberla::float64 elMat_3_2 = tmp_kernel_op_9;
+             const walberla::float64 elMat_3_3 = tmp_kernel_op_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
              {
                 {
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1]));
@@ -817,59 +791,59 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(elMat_0_0));
-                   _data_mat[1] = ((real_t)(elMat_0_1));
-                   _data_mat[2] = ((real_t)(elMat_0_2));
-                   _data_mat[3] = ((real_t)(elMat_0_3));
-                   _data_mat[4] = ((real_t)(elMat_1_0));
-                   _data_mat[5] = ((real_t)(elMat_1_1));
-                   _data_mat[6] = ((real_t)(elMat_1_2));
-                   _data_mat[7] = ((real_t)(elMat_1_3));
-                   _data_mat[8] = ((real_t)(elMat_2_0));
-                   _data_mat[9] = ((real_t)(elMat_2_1));
-                   _data_mat[10] = ((real_t)(elMat_2_2));
-                   _data_mat[11] = ((real_t)(elMat_2_3));
-                   _data_mat[12] = ((real_t)(elMat_3_0));
-                   _data_mat[13] = ((real_t)(elMat_3_1));
-                   _data_mat[14] = ((real_t)(elMat_3_2));
-                   _data_mat[15] = ((real_t)(elMat_3_3));
+                   _data_mat[0] = ((walberla::float64)(elMat_0_0));
+                   _data_mat[1] = ((walberla::float64)(elMat_0_1));
+                   _data_mat[2] = ((walberla::float64)(elMat_0_2));
+                   _data_mat[3] = ((walberla::float64)(elMat_0_3));
+                   _data_mat[4] = ((walberla::float64)(elMat_1_0));
+                   _data_mat[5] = ((walberla::float64)(elMat_1_1));
+                   _data_mat[6] = ((walberla::float64)(elMat_1_2));
+                   _data_mat[7] = ((walberla::float64)(elMat_1_3));
+                   _data_mat[8] = ((walberla::float64)(elMat_2_0));
+                   _data_mat[9] = ((walberla::float64)(elMat_2_1));
+                   _data_mat[10] = ((walberla::float64)(elMat_2_2));
+                   _data_mat[11] = ((walberla::float64)(elMat_2_3));
+                   _data_mat[12] = ((walberla::float64)(elMat_3_0));
+                   _data_mat[13] = ((walberla::float64)(elMat_3_1));
+                   _data_mat[14] = ((walberla::float64)(elMat_3_2));
+                   _data_mat[15] = ((walberla::float64)(elMat_3_3));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
                 }
              }
-             const real_t tmp_0_BLUE_UP = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-             const real_t tmp_1_BLUE_UP = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-             const real_t tmp_2_BLUE_UP = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
-             const real_t tmp_3_BLUE_UP = abs_det_jac_affine_BLUE_UP*0.16666666666666666;
-             const real_t tmp_4_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_0_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*tmp_2_BLUE_UP);
-             const real_t tmp_5_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_1_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*tmp_2_BLUE_UP);
-             const real_t tmp_6_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_2_0_BLUE_UP*tmp_0_BLUE_UP + jac_affine_inv_2_1_BLUE_UP*tmp_1_BLUE_UP + jac_affine_inv_2_2_BLUE_UP*tmp_2_BLUE_UP);
-             const real_t tmp_7_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
-             const real_t tmp_8_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-             const real_t tmp_9_BLUE_UP = tmp_3_BLUE_UP*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-             const real_t Dummy_1428 = tmp_3_BLUE_UP*((tmp_0_BLUE_UP*tmp_0_BLUE_UP) + (tmp_1_BLUE_UP*tmp_1_BLUE_UP) + (tmp_2_BLUE_UP*tmp_2_BLUE_UP));
-             const real_t Dummy_1429 = tmp_4_BLUE_UP;
-             const real_t Dummy_1430 = tmp_5_BLUE_UP;
-             const real_t Dummy_1431 = tmp_6_BLUE_UP;
-             const real_t Dummy_1432 = tmp_4_BLUE_UP;
-             const real_t Dummy_1433 = tmp_3_BLUE_UP*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-             const real_t Dummy_1434 = tmp_7_BLUE_UP;
-             const real_t Dummy_1435 = tmp_8_BLUE_UP;
-             const real_t Dummy_1436 = tmp_5_BLUE_UP;
-             const real_t Dummy_1437 = tmp_7_BLUE_UP;
-             const real_t Dummy_1438 = tmp_3_BLUE_UP*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-             const real_t Dummy_1439 = tmp_9_BLUE_UP;
-             const real_t Dummy_1440 = tmp_6_BLUE_UP;
-             const real_t Dummy_1441 = tmp_8_BLUE_UP;
-             const real_t Dummy_1442 = tmp_9_BLUE_UP;
-             const real_t Dummy_1443 = tmp_3_BLUE_UP*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+             const walberla::float64 Dummy_1456 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+             const walberla::float64 Dummy_1457 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+             const walberla::float64 Dummy_1458 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+             const walberla::float64 Dummy_1459 = abs_det_jac_affine_BLUE_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1460 = Dummy_1459*(Dummy_1456*jac_affine_inv_0_0_BLUE_UP + Dummy_1457*jac_affine_inv_0_1_BLUE_UP + Dummy_1458*jac_affine_inv_0_2_BLUE_UP);
+             const walberla::float64 Dummy_1461 = Dummy_1459*(Dummy_1456*jac_affine_inv_1_0_BLUE_UP + Dummy_1457*jac_affine_inv_1_1_BLUE_UP + Dummy_1458*jac_affine_inv_1_2_BLUE_UP);
+             const walberla::float64 Dummy_1462 = Dummy_1459*(Dummy_1456*jac_affine_inv_2_0_BLUE_UP + Dummy_1457*jac_affine_inv_2_1_BLUE_UP + Dummy_1458*jac_affine_inv_2_2_BLUE_UP);
+             const walberla::float64 Dummy_1463 = Dummy_1459*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
+             const walberla::float64 Dummy_1464 = Dummy_1459*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+             const walberla::float64 Dummy_1465 = Dummy_1459*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+             const walberla::float64 Dummy_1466 = Dummy_1459*((Dummy_1456*Dummy_1456) + (Dummy_1457*Dummy_1457) + (Dummy_1458*Dummy_1458));
+             const walberla::float64 Dummy_1467 = Dummy_1460;
+             const walberla::float64 Dummy_1468 = Dummy_1461;
+             const walberla::float64 Dummy_1469 = Dummy_1462;
+             const walberla::float64 Dummy_1470 = Dummy_1460;
+             const walberla::float64 Dummy_1471 = Dummy_1459*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+             const walberla::float64 Dummy_1472 = Dummy_1463;
+             const walberla::float64 Dummy_1473 = Dummy_1464;
+             const walberla::float64 Dummy_1474 = Dummy_1461;
+             const walberla::float64 Dummy_1475 = Dummy_1463;
+             const walberla::float64 Dummy_1476 = Dummy_1459*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+             const walberla::float64 Dummy_1477 = Dummy_1465;
+             const walberla::float64 Dummy_1478 = Dummy_1462;
+             const walberla::float64 Dummy_1479 = Dummy_1464;
+             const walberla::float64 Dummy_1480 = Dummy_1465;
+             const walberla::float64 Dummy_1481 = Dummy_1459*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
              {
                 {
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2]));
@@ -884,59 +858,59 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1428));
-                   _data_mat[1] = ((real_t)(Dummy_1429));
-                   _data_mat[2] = ((real_t)(Dummy_1430));
-                   _data_mat[3] = ((real_t)(Dummy_1431));
-                   _data_mat[4] = ((real_t)(Dummy_1432));
-                   _data_mat[5] = ((real_t)(Dummy_1433));
-                   _data_mat[6] = ((real_t)(Dummy_1434));
-                   _data_mat[7] = ((real_t)(Dummy_1435));
-                   _data_mat[8] = ((real_t)(Dummy_1436));
-                   _data_mat[9] = ((real_t)(Dummy_1437));
-                   _data_mat[10] = ((real_t)(Dummy_1438));
-                   _data_mat[11] = ((real_t)(Dummy_1439));
-                   _data_mat[12] = ((real_t)(Dummy_1440));
-                   _data_mat[13] = ((real_t)(Dummy_1441));
-                   _data_mat[14] = ((real_t)(Dummy_1442));
-                   _data_mat[15] = ((real_t)(Dummy_1443));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1466));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1467));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1468));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1469));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1470));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1471));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1472));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1473));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1474));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1475));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1476));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1477));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1478));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1479));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1480));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1481));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
                 }
              }
-             const real_t tmp_0_BLUE_DOWN = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-             const real_t tmp_1_BLUE_DOWN = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-             const real_t tmp_2_BLUE_DOWN = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
-             const real_t tmp_3_BLUE_DOWN = abs_det_jac_affine_BLUE_DOWN*0.16666666666666666;
-             const real_t tmp_4_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_0_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*tmp_2_BLUE_DOWN);
-             const real_t tmp_5_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_1_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*tmp_2_BLUE_DOWN);
-             const real_t tmp_6_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_2_0_BLUE_DOWN*tmp_0_BLUE_DOWN + jac_affine_inv_2_1_BLUE_DOWN*tmp_1_BLUE_DOWN + jac_affine_inv_2_2_BLUE_DOWN*tmp_2_BLUE_DOWN);
-             const real_t tmp_7_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
-             const real_t tmp_8_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-             const real_t tmp_9_BLUE_DOWN = tmp_3_BLUE_DOWN*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-             const real_t Dummy_1444 = tmp_3_BLUE_DOWN*((tmp_0_BLUE_DOWN*tmp_0_BLUE_DOWN) + (tmp_1_BLUE_DOWN*tmp_1_BLUE_DOWN) + (tmp_2_BLUE_DOWN*tmp_2_BLUE_DOWN));
-             const real_t Dummy_1445 = tmp_4_BLUE_DOWN;
-             const real_t Dummy_1446 = tmp_5_BLUE_DOWN;
-             const real_t Dummy_1447 = tmp_6_BLUE_DOWN;
-             const real_t Dummy_1448 = tmp_4_BLUE_DOWN;
-             const real_t Dummy_1449 = tmp_3_BLUE_DOWN*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-             const real_t Dummy_1450 = tmp_7_BLUE_DOWN;
-             const real_t Dummy_1451 = tmp_8_BLUE_DOWN;
-             const real_t Dummy_1452 = tmp_5_BLUE_DOWN;
-             const real_t Dummy_1453 = tmp_7_BLUE_DOWN;
-             const real_t Dummy_1454 = tmp_3_BLUE_DOWN*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-             const real_t Dummy_1455 = tmp_9_BLUE_DOWN;
-             const real_t Dummy_1456 = tmp_6_BLUE_DOWN;
-             const real_t Dummy_1457 = tmp_8_BLUE_DOWN;
-             const real_t Dummy_1458 = tmp_9_BLUE_DOWN;
-             const real_t Dummy_1459 = tmp_3_BLUE_DOWN*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1482 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+             const walberla::float64 Dummy_1483 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+             const walberla::float64 Dummy_1484 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+             const walberla::float64 Dummy_1485 = abs_det_jac_affine_BLUE_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1486 = Dummy_1485*(Dummy_1482*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1483*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1484*jac_affine_inv_0_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1487 = Dummy_1485*(Dummy_1482*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1483*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1484*jac_affine_inv_1_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1488 = Dummy_1485*(Dummy_1482*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1483*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1484*jac_affine_inv_2_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1489 = Dummy_1485*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1490 = Dummy_1485*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1491 = Dummy_1485*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+             const walberla::float64 Dummy_1492 = Dummy_1485*((Dummy_1482*Dummy_1482) + (Dummy_1483*Dummy_1483) + (Dummy_1484*Dummy_1484));
+             const walberla::float64 Dummy_1493 = Dummy_1486;
+             const walberla::float64 Dummy_1494 = Dummy_1487;
+             const walberla::float64 Dummy_1495 = Dummy_1488;
+             const walberla::float64 Dummy_1496 = Dummy_1486;
+             const walberla::float64 Dummy_1497 = Dummy_1485*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1498 = Dummy_1489;
+             const walberla::float64 Dummy_1499 = Dummy_1490;
+             const walberla::float64 Dummy_1500 = Dummy_1487;
+             const walberla::float64 Dummy_1501 = Dummy_1489;
+             const walberla::float64 Dummy_1502 = Dummy_1485*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+             const walberla::float64 Dummy_1503 = Dummy_1491;
+             const walberla::float64 Dummy_1504 = Dummy_1488;
+             const walberla::float64 Dummy_1505 = Dummy_1490;
+             const walberla::float64 Dummy_1506 = Dummy_1491;
+             const walberla::float64 Dummy_1507 = Dummy_1485*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
              {
                 {
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - 2]));
@@ -951,59 +925,59 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1444));
-                   _data_mat[1] = ((real_t)(Dummy_1445));
-                   _data_mat[2] = ((real_t)(Dummy_1446));
-                   _data_mat[3] = ((real_t)(Dummy_1447));
-                   _data_mat[4] = ((real_t)(Dummy_1448));
-                   _data_mat[5] = ((real_t)(Dummy_1449));
-                   _data_mat[6] = ((real_t)(Dummy_1450));
-                   _data_mat[7] = ((real_t)(Dummy_1451));
-                   _data_mat[8] = ((real_t)(Dummy_1452));
-                   _data_mat[9] = ((real_t)(Dummy_1453));
-                   _data_mat[10] = ((real_t)(Dummy_1454));
-                   _data_mat[11] = ((real_t)(Dummy_1455));
-                   _data_mat[12] = ((real_t)(Dummy_1456));
-                   _data_mat[13] = ((real_t)(Dummy_1457));
-                   _data_mat[14] = ((real_t)(Dummy_1458));
-                   _data_mat[15] = ((real_t)(Dummy_1459));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1492));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1493));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1494));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1495));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1496));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1497));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1498));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1499));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1500));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1501));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1502));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1503));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1504));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1505));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1506));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1507));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
                 }
              }
-             const real_t tmp_0_GREEN_UP = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-             const real_t tmp_1_GREEN_UP = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-             const real_t tmp_2_GREEN_UP = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
-             const real_t tmp_3_GREEN_UP = abs_det_jac_affine_GREEN_UP*0.16666666666666666;
-             const real_t tmp_4_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_0_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*tmp_2_GREEN_UP);
-             const real_t tmp_5_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_1_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*tmp_2_GREEN_UP);
-             const real_t tmp_6_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_2_0_GREEN_UP*tmp_0_GREEN_UP + jac_affine_inv_2_1_GREEN_UP*tmp_1_GREEN_UP + jac_affine_inv_2_2_GREEN_UP*tmp_2_GREEN_UP);
-             const real_t tmp_7_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
-             const real_t tmp_8_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-             const real_t tmp_9_GREEN_UP = tmp_3_GREEN_UP*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-             const real_t Dummy_1460 = tmp_3_GREEN_UP*((tmp_0_GREEN_UP*tmp_0_GREEN_UP) + (tmp_1_GREEN_UP*tmp_1_GREEN_UP) + (tmp_2_GREEN_UP*tmp_2_GREEN_UP));
-             const real_t Dummy_1461 = tmp_4_GREEN_UP;
-             const real_t Dummy_1462 = tmp_5_GREEN_UP;
-             const real_t Dummy_1463 = tmp_6_GREEN_UP;
-             const real_t Dummy_1464 = tmp_4_GREEN_UP;
-             const real_t Dummy_1465 = tmp_3_GREEN_UP*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-             const real_t Dummy_1466 = tmp_7_GREEN_UP;
-             const real_t Dummy_1467 = tmp_8_GREEN_UP;
-             const real_t Dummy_1468 = tmp_5_GREEN_UP;
-             const real_t Dummy_1469 = tmp_7_GREEN_UP;
-             const real_t Dummy_1470 = tmp_3_GREEN_UP*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-             const real_t Dummy_1471 = tmp_9_GREEN_UP;
-             const real_t Dummy_1472 = tmp_6_GREEN_UP;
-             const real_t Dummy_1473 = tmp_8_GREEN_UP;
-             const real_t Dummy_1474 = tmp_9_GREEN_UP;
-             const real_t Dummy_1475 = tmp_3_GREEN_UP*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+             const walberla::float64 Dummy_1508 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+             const walberla::float64 Dummy_1509 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+             const walberla::float64 Dummy_1510 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+             const walberla::float64 Dummy_1511 = abs_det_jac_affine_GREEN_UP*0.16666666666666663;
+             const walberla::float64 Dummy_1512 = Dummy_1511*(Dummy_1508*jac_affine_inv_0_0_GREEN_UP + Dummy_1509*jac_affine_inv_0_1_GREEN_UP + Dummy_1510*jac_affine_inv_0_2_GREEN_UP);
+             const walberla::float64 Dummy_1513 = Dummy_1511*(Dummy_1508*jac_affine_inv_1_0_GREEN_UP + Dummy_1509*jac_affine_inv_1_1_GREEN_UP + Dummy_1510*jac_affine_inv_1_2_GREEN_UP);
+             const walberla::float64 Dummy_1514 = Dummy_1511*(Dummy_1508*jac_affine_inv_2_0_GREEN_UP + Dummy_1509*jac_affine_inv_2_1_GREEN_UP + Dummy_1510*jac_affine_inv_2_2_GREEN_UP);
+             const walberla::float64 Dummy_1515 = Dummy_1511*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
+             const walberla::float64 Dummy_1516 = Dummy_1511*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+             const walberla::float64 Dummy_1517 = Dummy_1511*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+             const walberla::float64 Dummy_1518 = Dummy_1511*((Dummy_1508*Dummy_1508) + (Dummy_1509*Dummy_1509) + (Dummy_1510*Dummy_1510));
+             const walberla::float64 Dummy_1519 = Dummy_1512;
+             const walberla::float64 Dummy_1520 = Dummy_1513;
+             const walberla::float64 Dummy_1521 = Dummy_1514;
+             const walberla::float64 Dummy_1522 = Dummy_1512;
+             const walberla::float64 Dummy_1523 = Dummy_1511*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+             const walberla::float64 Dummy_1524 = Dummy_1515;
+             const walberla::float64 Dummy_1525 = Dummy_1516;
+             const walberla::float64 Dummy_1526 = Dummy_1513;
+             const walberla::float64 Dummy_1527 = Dummy_1515;
+             const walberla::float64 Dummy_1528 = Dummy_1511*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+             const walberla::float64 Dummy_1529 = Dummy_1517;
+             const walberla::float64 Dummy_1530 = Dummy_1514;
+             const walberla::float64 Dummy_1531 = Dummy_1516;
+             const walberla::float64 Dummy_1532 = Dummy_1517;
+             const walberla::float64 Dummy_1533 = Dummy_1511*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
              {
                 {
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2]));
@@ -1018,59 +992,59 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1460));
-                   _data_mat[1] = ((real_t)(Dummy_1461));
-                   _data_mat[2] = ((real_t)(Dummy_1462));
-                   _data_mat[3] = ((real_t)(Dummy_1463));
-                   _data_mat[4] = ((real_t)(Dummy_1464));
-                   _data_mat[5] = ((real_t)(Dummy_1465));
-                   _data_mat[6] = ((real_t)(Dummy_1466));
-                   _data_mat[7] = ((real_t)(Dummy_1467));
-                   _data_mat[8] = ((real_t)(Dummy_1468));
-                   _data_mat[9] = ((real_t)(Dummy_1469));
-                   _data_mat[10] = ((real_t)(Dummy_1470));
-                   _data_mat[11] = ((real_t)(Dummy_1471));
-                   _data_mat[12] = ((real_t)(Dummy_1472));
-                   _data_mat[13] = ((real_t)(Dummy_1473));
-                   _data_mat[14] = ((real_t)(Dummy_1474));
-                   _data_mat[15] = ((real_t)(Dummy_1475));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1518));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1519));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1520));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1521));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1522));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1523));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1524));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1525));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1526));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1527));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1528));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1529));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1530));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1531));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1532));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1533));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
                 }
              }
-             const real_t tmp_0_GREEN_DOWN = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-             const real_t tmp_1_GREEN_DOWN = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-             const real_t tmp_2_GREEN_DOWN = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
-             const real_t tmp_3_GREEN_DOWN = abs_det_jac_affine_GREEN_DOWN*0.16666666666666666;
-             const real_t tmp_4_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_0_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*tmp_2_GREEN_DOWN);
-             const real_t tmp_5_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_1_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*tmp_2_GREEN_DOWN);
-             const real_t tmp_6_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_2_0_GREEN_DOWN*tmp_0_GREEN_DOWN + jac_affine_inv_2_1_GREEN_DOWN*tmp_1_GREEN_DOWN + jac_affine_inv_2_2_GREEN_DOWN*tmp_2_GREEN_DOWN);
-             const real_t tmp_7_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
-             const real_t tmp_8_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-             const real_t tmp_9_GREEN_DOWN = tmp_3_GREEN_DOWN*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-             const real_t Dummy_1476 = tmp_3_GREEN_DOWN*((tmp_0_GREEN_DOWN*tmp_0_GREEN_DOWN) + (tmp_1_GREEN_DOWN*tmp_1_GREEN_DOWN) + (tmp_2_GREEN_DOWN*tmp_2_GREEN_DOWN));
-             const real_t Dummy_1477 = tmp_4_GREEN_DOWN;
-             const real_t Dummy_1478 = tmp_5_GREEN_DOWN;
-             const real_t Dummy_1479 = tmp_6_GREEN_DOWN;
-             const real_t Dummy_1480 = tmp_4_GREEN_DOWN;
-             const real_t Dummy_1481 = tmp_3_GREEN_DOWN*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-             const real_t Dummy_1482 = tmp_7_GREEN_DOWN;
-             const real_t Dummy_1483 = tmp_8_GREEN_DOWN;
-             const real_t Dummy_1484 = tmp_5_GREEN_DOWN;
-             const real_t Dummy_1485 = tmp_7_GREEN_DOWN;
-             const real_t Dummy_1486 = tmp_3_GREEN_DOWN*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-             const real_t Dummy_1487 = tmp_9_GREEN_DOWN;
-             const real_t Dummy_1488 = tmp_6_GREEN_DOWN;
-             const real_t Dummy_1489 = tmp_8_GREEN_DOWN;
-             const real_t Dummy_1490 = tmp_9_GREEN_DOWN;
-             const real_t Dummy_1491 = tmp_3_GREEN_DOWN*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1534 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+             const walberla::float64 Dummy_1535 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+             const walberla::float64 Dummy_1536 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+             const walberla::float64 Dummy_1537 = abs_det_jac_affine_GREEN_DOWN*0.16666666666666663;
+             const walberla::float64 Dummy_1538 = Dummy_1537*(Dummy_1534*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1535*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1536*jac_affine_inv_0_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1539 = Dummy_1537*(Dummy_1534*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1535*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1536*jac_affine_inv_1_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1540 = Dummy_1537*(Dummy_1534*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1535*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1536*jac_affine_inv_2_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1541 = Dummy_1537*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1542 = Dummy_1537*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1543 = Dummy_1537*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+             const walberla::float64 Dummy_1544 = Dummy_1537*((Dummy_1534*Dummy_1534) + (Dummy_1535*Dummy_1535) + (Dummy_1536*Dummy_1536));
+             const walberla::float64 Dummy_1545 = Dummy_1538;
+             const walberla::float64 Dummy_1546 = Dummy_1539;
+             const walberla::float64 Dummy_1547 = Dummy_1540;
+             const walberla::float64 Dummy_1548 = Dummy_1538;
+             const walberla::float64 Dummy_1549 = Dummy_1537*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1550 = Dummy_1541;
+             const walberla::float64 Dummy_1551 = Dummy_1542;
+             const walberla::float64 Dummy_1552 = Dummy_1539;
+             const walberla::float64 Dummy_1553 = Dummy_1541;
+             const walberla::float64 Dummy_1554 = Dummy_1537*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+             const walberla::float64 Dummy_1555 = Dummy_1543;
+             const walberla::float64 Dummy_1556 = Dummy_1540;
+             const walberla::float64 Dummy_1557 = Dummy_1542;
+             const walberla::float64 Dummy_1558 = Dummy_1543;
+             const walberla::float64 Dummy_1559 = Dummy_1537*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
              {
                 {
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 2]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[-ctr_1 - ctr_2 + micro_edges_per_macro_edge + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1]));
@@ -1085,22 +1059,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1476));
-                   _data_mat[1] = ((real_t)(Dummy_1477));
-                   _data_mat[2] = ((real_t)(Dummy_1478));
-                   _data_mat[3] = ((real_t)(Dummy_1479));
-                   _data_mat[4] = ((real_t)(Dummy_1480));
-                   _data_mat[5] = ((real_t)(Dummy_1481));
-                   _data_mat[6] = ((real_t)(Dummy_1482));
-                   _data_mat[7] = ((real_t)(Dummy_1483));
-                   _data_mat[8] = ((real_t)(Dummy_1484));
-                   _data_mat[9] = ((real_t)(Dummy_1485));
-                   _data_mat[10] = ((real_t)(Dummy_1486));
-                   _data_mat[11] = ((real_t)(Dummy_1487));
-                   _data_mat[12] = ((real_t)(Dummy_1488));
-                   _data_mat[13] = ((real_t)(Dummy_1489));
-                   _data_mat[14] = ((real_t)(Dummy_1490));
-                   _data_mat[15] = ((real_t)(Dummy_1491));
+                   _data_mat[0] = ((walberla::float64)(Dummy_1544));
+                   _data_mat[1] = ((walberla::float64)(Dummy_1545));
+                   _data_mat[2] = ((walberla::float64)(Dummy_1546));
+                   _data_mat[3] = ((walberla::float64)(Dummy_1547));
+                   _data_mat[4] = ((walberla::float64)(Dummy_1548));
+                   _data_mat[5] = ((walberla::float64)(Dummy_1549));
+                   _data_mat[6] = ((walberla::float64)(Dummy_1550));
+                   _data_mat[7] = ((walberla::float64)(Dummy_1551));
+                   _data_mat[8] = ((walberla::float64)(Dummy_1552));
+                   _data_mat[9] = ((walberla::float64)(Dummy_1553));
+                   _data_mat[10] = ((walberla::float64)(Dummy_1554));
+                   _data_mat[11] = ((walberla::float64)(Dummy_1555));
+                   _data_mat[12] = ((walberla::float64)(Dummy_1556));
+                   _data_mat[13] = ((walberla::float64)(Dummy_1557));
+                   _data_mat[14] = ((walberla::float64)(Dummy_1558));
+                   _data_mat[15] = ((walberla::float64)(Dummy_1559));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
@@ -1113,7 +1087,7 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                    std::vector< uint_t > _data_rowIdx( 4 );
                    std::vector< uint_t > _data_colIdx( 4 );
-                   std::vector< real_t > _data_mat( 16 );
+                   std::vector< walberla::float64 > _data_mat( 16 );
                
                    _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) - 1]));
                    _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ctr_1 - ctr_2 + micro_edges_per_macro_edge - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -1128,22 +1102,22 @@ void P1ElementwiseDiffusion::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx
                
                
                
-                   _data_mat[0] = ((real_t)(Dummy_1502));
-                   _data_mat[1] = ((real_t)(Dummy_1503));
-                   _data_mat[2] = ((real_t)(Dummy_1504));
-                   _data_mat[3] = ((real_t)(Dummy_1505));
-                   _data_mat[4] = ((real_t)(Dummy_1506));
-                   _data_mat[5] = ((real_t)(Dummy_1507));
-                   _data_mat[6] = ((real_t)(Dummy_1508));
-                   _data_mat[7] = ((real_t)(Dummy_1509));
-                   _data_mat[8] = ((real_t)(Dummy_1510));
-                   _data_mat[9] = ((real_t)(Dummy_1511));
-                   _data_mat[10] = ((real_t)(Dummy_1512));
-                   _data_mat[11] = ((real_t)(Dummy_1513));
-                   _data_mat[12] = ((real_t)(Dummy_1514));
-                   _data_mat[13] = ((real_t)(Dummy_1515));
-                   _data_mat[14] = ((real_t)(Dummy_1516));
-                   _data_mat[15] = ((real_t)(Dummy_1517));
+                   _data_mat[0] = ((walberla::float64)(elMat_0_0));
+                   _data_mat[1] = ((walberla::float64)(elMat_0_1));
+                   _data_mat[2] = ((walberla::float64)(elMat_0_2));
+                   _data_mat[3] = ((walberla::float64)(elMat_0_3));
+                   _data_mat[4] = ((walberla::float64)(elMat_1_0));
+                   _data_mat[5] = ((walberla::float64)(elMat_1_1));
+                   _data_mat[6] = ((walberla::float64)(elMat_1_2));
+                   _data_mat[7] = ((walberla::float64)(elMat_1_3));
+                   _data_mat[8] = ((walberla::float64)(elMat_2_0));
+                   _data_mat[9] = ((walberla::float64)(elMat_2_1));
+                   _data_mat[10] = ((walberla::float64)(elMat_2_2));
+                   _data_mat[11] = ((walberla::float64)(elMat_2_3));
+                   _data_mat[12] = ((walberla::float64)(elMat_3_0));
+                   _data_mat[13] = ((walberla::float64)(elMat_3_1));
+                   _data_mat[14] = ((walberla::float64)(elMat_3_2));
+                   _data_mat[15] = ((walberla::float64)(elMat_3_3));
                
                
                    mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/div_k_grad/CMakeLists.txt b/operators/div_k_grad/CMakeLists.txt
index a5068b7373c1cd79d34f1c0d7eecbdbe213454bd..776654d509397a5467874774eda569f1a638f0db 100644
--- a/operators/div_k_grad/CMakeLists.txt
+++ b/operators/div_k_grad/CMakeLists.txt
@@ -61,4 +61,8 @@ endif()
 if (HYTEG_BUILD_WITH_PETSC)
    target_link_libraries(opgen-div_k_grad PUBLIC PETSc::PETSc)
 endif ()
-target_compile_features(opgen-div_k_grad PUBLIC cxx_std_17)
+if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)
+    target_compile_features(opgen-div_k_grad PUBLIC cxx_std_23)
+else ()
+    target_compile_features(opgen-div_k_grad PUBLIC cxx_std_17)
+endif ()
diff --git a/operators/div_k_grad/P1ElementwiseDivKGrad.cpp b/operators/div_k_grad/P1ElementwiseDivKGrad.cpp
index 57beca7d974efd305331708ec6fb46bf7e563669..faf7bf7535f8b8e59f3911c923502ef68b3dc3b3 100644
--- a/operators/div_k_grad/P1ElementwiseDivKGrad.cpp
+++ b/operators/div_k_grad/P1ElementwiseDivKGrad.cpp
@@ -50,18 +50,21 @@ namespace operatorgeneration {
 P1ElementwiseDivKGrad::P1ElementwiseDivKGrad( const std::shared_ptr< PrimitiveStorage >& storage,
                                               size_t                                     minLevel,
                                               size_t                                     maxLevel,
-                                              const P1Function< real_t >&                _k )
+                                              const P1Function< walberla::float64 >&     _k )
 : Operator( storage, minLevel, maxLevel )
 , k( _k )
 {}
 
-void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
-                                   const P1Function< real_t >& dst,
-                                   uint_t                      level,
-                                   DoFType                     flag,
-                                   UpdateType                  updateType ) const
+void P1ElementwiseDivKGrad::apply( const P1Function< walberla::float64 >& src,
+                                   const P1Function< walberla::float64 >& dst,
+                                   uint_t                                 level,
+                                   DoFType                                flag,
+                                   UpdateType                             updateType ) const
 {
+   this->startTiming( "apply" );
+
    // Make sure that halos are up-to-date
+   this->timingTree_->start( "pre-communication" );
    if ( this->storage_->hasGlobalCells() )
    {
       // Note that the order of communication is important, since the face -> cell communication may overwrite
@@ -78,6 +81,7 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
       communication::syncFunctionBetweenPrimitives( src, level, communication::syncDirection_t::LOW2HIGH );
       communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
    }
+   this->timingTree_->stop( "pre-communication" );
 
    if ( updateType == Replace )
    {
@@ -85,7 +89,7 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
       // However, we must not zero out anything that is not flagged with the specified BCs.
       // Therefore, we first zero out everything that flagged, and then, later,
       // the halos of the highest dim primitives.
-      dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag );
+      dst.interpolate( walberla::numeric_cast< walberla::float64 >( 0 ), level, flag );
    }
 
    if ( storage_->hasGlobalCells() )
@@ -95,9 +99,9 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
-         real_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
-         real_t* _data_k   = cell.getData( k.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_k   = cell.getData( k.getCellDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -108,24 +112,26 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
             if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() )
             {
                auto arrayIdx       = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_3D(
 
@@ -146,15 +152,18 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_3comp2,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
    else
    {
@@ -163,9 +172,9 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
          Face& face = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
-         real_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
-         real_t* _data_k   = face.getData( k.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_k   = face.getData( k.getFaceDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -176,18 +185,20 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
             if ( vertexdof::macroface::isVertexOnBoundary( level, idx ) )
             {
                auto arrayIdx       = vertexdof::macroface::index( level, idx.x(), idx.y() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_2D(
 
@@ -202,15 +213,20 @@ void P1ElementwiseDivKGrad::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_2comp1,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Face, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Face, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
+
+   this->stopTiming( "apply" );
 }
 void P1ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                                       const P1Function< idx_t >&                  src,
@@ -218,6 +234,8 @@ void P1ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
                                       uint_t                                      level,
                                       DoFType                                     flag ) const
 {
+   this->startTiming( "toMatrix" );
+
    // We currently ignore the flag provided!
    if ( flag != All )
    {
@@ -226,33 +244,37 @@ void P1ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
 
    if ( storage_->hasGlobalCells() )
    {
+      this->timingTree_->start( "pre-communication" );
       k.communicate< Face, Cell >( level );
       k.communicate< Edge, Cell >( level );
       k.communicate< Vertex, Cell >( level );
+      this->timingTree_->stop( "pre-communication" );
 
       for ( auto& it : storage_->getCells() )
       {
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data
-         idx_t*  _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
-         idx_t*  _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
-         real_t* _data_k   = cell.getData( k.getCellDataID() )->getPointer( level );
-
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         idx_t*             _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
+         idx_t*             _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_k   = cell.getData( k.getCellDataID() )->getPointer( level );
+
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_3D(
 
@@ -274,29 +296,34 @@ void P1ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
    else
    {
+      this->timingTree_->start( "pre-communication" );
       communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
+      this->timingTree_->stop( "pre-communication" );
 
       for ( auto& it : storage_->getFaces() )
       {
          Face& face = *it.second;
 
          // get hold of the actual numerical data
-         idx_t*  _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
-         idx_t*  _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
-         real_t* _data_k   = face.getData( k.getFaceDataID() )->getPointer( level );
-
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         idx_t*             _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
+         idx_t*             _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_k   = face.getData( k.getFaceDataID() )->getPointer( level );
+
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_2D(
 
@@ -312,14 +339,19 @@ void P1ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
+   this->stopTiming( "toMatrix" );
 }
 void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
 {
+   this->startTiming( "computeInverseDiagonalOperatorValues" );
+
    if ( invDiag_ == nullptr )
    {
-      invDiag_ = std::make_shared< P1Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
+      invDiag_ =
+          std::make_shared< P1Function< walberla::float64 > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
    }
 
    for ( uint_t level = minLevel_; level <= maxLevel_; level++ )
@@ -328,32 +360,36 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
 
       if ( storage_->hasGlobalCells() )
       {
+         this->timingTree_->start( "pre-communication" );
          k.communicate< Face, Cell >( level );
          k.communicate< Edge, Cell >( level );
          k.communicate< Vertex, Cell >( level );
+         this->timingTree_->stop( "pre-communication" );
 
          for ( auto& it : storage_->getCells() )
          {
             Cell& cell = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
-            real_t* _data_k        = cell.getData( k.getCellDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-            const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-            const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-            const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-            const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+            walberla::float64* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
+            walberla::float64* _data_k        = cell.getData( k.getCellDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+            const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+            const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+            const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+            const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_3D(
 
@@ -373,36 +409,43 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_3comp2,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Cell, Face >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
       else
       {
+         this->timingTree_->start( "pre-communication" );
          communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
+         this->timingTree_->stop( "pre-communication" );
 
          for ( auto& it : storage_->getFaces() )
          {
             Face& face = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
-            real_t* _data_k        = face.getData( k.getFaceDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+            walberla::float64* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
+            walberla::float64* _data_k        = face.getData( k.getFaceDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_2D(
 
@@ -416,20 +459,25 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_2comp1,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Face, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Face, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
 
       ( *invDiag_ ).invertElementwise( level );
    }
+
+   this->stopTiming( "computeInverseDiagonalOperatorValues" );
 }
-std::shared_ptr< P1Function< real_t > > P1ElementwiseDivKGrad::getInverseDiagonalValues() const
+std::shared_ptr< P1Function< walberla::float64 > > P1ElementwiseDivKGrad::getInverseDiagonalValues() const
 {
    return invDiag_;
 }
diff --git a/operators/div_k_grad/P1ElementwiseDivKGrad.hpp b/operators/div_k_grad/P1ElementwiseDivKGrad.hpp
index c71b323f36b2da918a380e94d0a44ab985e2e46b..e8ce929936b159c1a456db3798976799a86c0259 100644
--- a/operators/div_k_grad/P1ElementwiseDivKGrad.hpp
+++ b/operators/div_k_grad/P1ElementwiseDivKGrad.hpp
@@ -43,20 +43,32 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-class P1ElementwiseDivKGrad : public Operator< P1Function< real_t >, P1Function< real_t > >,
-                              public OperatorWithInverseDiagonal< P1Function< real_t > >
+/// Diffusion operator with a scalar coefficient.
+///
+/// Geometry map: IdentityMap
+///
+/// Weak formulation
+///
+///     u: trial function (space: Lagrange, degree: 1)
+///     v: test function  (space: Lagrange, degree: 1)
+///     k: coefficient    (space: Lagrange, degree: 1)
+///
+///     ∫ k ∇u · ∇v
+
+class P1ElementwiseDivKGrad : public Operator< P1Function< walberla::float64 >, P1Function< walberla::float64 > >,
+                              public OperatorWithInverseDiagonal< P1Function< walberla::float64 > >
 {
  public:
    P1ElementwiseDivKGrad( const std::shared_ptr< PrimitiveStorage >& storage,
                           size_t                                     minLevel,
                           size_t                                     maxLevel,
-                          const P1Function< real_t >&                _k );
+                          const P1Function< walberla::float64 >&     _k );
 
-   void apply( const P1Function< real_t >& src,
-               const P1Function< real_t >& dst,
-               uint_t                      level,
-               DoFType                     flag,
-               UpdateType                  updateType = Replace ) const;
+   void apply( const P1Function< walberla::float64 >& src,
+               const P1Function< walberla::float64 >& dst,
+               uint_t                                 level,
+               DoFType                                flag,
+               UpdateType                             updateType = Replace ) const;
 
    void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                   const P1Function< idx_t >&                  src,
@@ -66,133 +78,133 @@ class P1ElementwiseDivKGrad : public Operator< P1Function< real_t >, P1Function<
 
    void computeInverseDiagonalOperatorValues();
 
-   std::shared_ptr< P1Function< real_t > > getInverseDiagonalValues() const;
+   std::shared_ptr< P1Function< walberla::float64 > > getInverseDiagonalValues() const;
 
  protected:
  private:
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     63      78       0       0      0              0                 0              0
-   void apply_macro_2D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_k,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_2D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_k,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    184     200       0       0      0              0                 0              0
-   void apply_macro_3D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_k,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_0comp2,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_1comp2,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        real_t           macro_vertex_coord_id_2comp2,
-                        real_t           macro_vertex_coord_id_3comp0,
-                        real_t           macro_vertex_coord_id_3comp1,
-                        real_t           macro_vertex_coord_id_3comp2,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_3D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_k,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_0comp2,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp2,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp2,
+                        walberla::float64           macro_vertex_coord_id_3comp0,
+                        walberla::float64           macro_vertex_coord_id_3comp1,
+                        walberla::float64           macro_vertex_coord_id_3comp2,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     54      69       0       0      0              0                 0              3
    void toMatrix_macro_2D( idx_t* RESTRICT                      _data_dst,
-                           real_t* RESTRICT                     _data_k,
+                           walberla::float64* RESTRICT          _data_k,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    168     184       0       0      0              0                 0              3
    void toMatrix_macro_3D( idx_t* RESTRICT                      _data_dst,
-                           real_t* RESTRICT                     _data_k,
+                           walberla::float64* RESTRICT          _data_k,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_0comp2,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_1comp2,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
-                           real_t                               macro_vertex_coord_id_2comp2,
-                           real_t                               macro_vertex_coord_id_3comp0,
-                           real_t                               macro_vertex_coord_id_3comp1,
-                           real_t                               macro_vertex_coord_id_3comp2,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp2,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp2,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp2,
+                           walberla::float64                    macro_vertex_coord_id_3comp0,
+                           walberla::float64                    macro_vertex_coord_id_3comp1,
+                           walberla::float64                    macro_vertex_coord_id_3comp2,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     39      42       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_2D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t* RESTRICT _data_k,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
+   void computeInverseDiagonalOperatorValues_macro_2D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64* RESTRICT _data_k,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    100      88       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t* RESTRICT _data_k,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_0comp2,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_1comp2,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       real_t           macro_vertex_coord_id_2comp2,
-                                                       real_t           macro_vertex_coord_id_3comp0,
-                                                       real_t           macro_vertex_coord_id_3comp1,
-                                                       real_t           macro_vertex_coord_id_3comp2,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
-
-   std::shared_ptr< P1Function< real_t > > invDiag_;
-   P1Function< real_t >                    k;
+   void computeInverseDiagonalOperatorValues_macro_3D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64* RESTRICT _data_k,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_0comp2,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp2,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp2,
+                                                       walberla::float64           macro_vertex_coord_id_3comp0,
+                                                       walberla::float64           macro_vertex_coord_id_3comp1,
+                                                       walberla::float64           macro_vertex_coord_id_3comp2,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
+
+   std::shared_ptr< P1Function< walberla::float64 > > invDiag_;
+   P1Function< walberla::float64 >                    k;
 };
 
 } // namespace operatorgeneration
diff --git a/operators/div_k_grad/P2ElementwiseDivKGrad.cpp b/operators/div_k_grad/P2ElementwiseDivKGrad.cpp
index 70cbac859eab2038f2853bdcc0db30bb928fed16..49f0336a762fd9d3e661b509f96834ea26886350 100644
--- a/operators/div_k_grad/P2ElementwiseDivKGrad.cpp
+++ b/operators/div_k_grad/P2ElementwiseDivKGrad.cpp
@@ -50,18 +50,21 @@ namespace operatorgeneration {
 P2ElementwiseDivKGrad::P2ElementwiseDivKGrad( const std::shared_ptr< PrimitiveStorage >& storage,
                                               size_t                                     minLevel,
                                               size_t                                     maxLevel,
-                                              const P2Function< real_t >&                _k )
+                                              const P2Function< walberla::float64 >&     _k )
 : Operator( storage, minLevel, maxLevel )
 , k( _k )
 {}
 
-void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
-                                   const P2Function< real_t >& dst,
-                                   uint_t                      level,
-                                   DoFType                     flag,
-                                   UpdateType                  updateType ) const
+void P2ElementwiseDivKGrad::apply( const P2Function< walberla::float64 >& src,
+                                   const P2Function< walberla::float64 >& dst,
+                                   uint_t                                 level,
+                                   DoFType                                flag,
+                                   UpdateType                             updateType ) const
 {
+   this->startTiming( "apply" );
+
    // Make sure that halos are up-to-date
+   this->timingTree_->start( "pre-communication" );
    if ( this->storage_->hasGlobalCells() )
    {
       // Note that the order of communication is important, since the face -> cell communication may overwrite
@@ -78,6 +81,7 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
       communication::syncFunctionBetweenPrimitives( src, level, communication::syncDirection_t::LOW2HIGH );
       communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
    }
+   this->timingTree_->stop( "pre-communication" );
 
    if ( updateType == Replace )
    {
@@ -85,7 +89,7 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
       // However, we must not zero out anything that is not flagged with the specified BCs.
       // Therefore, we first zero out everything that flagged, and then, later,
       // the halos of the highest dim primitives.
-      dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag );
+      dst.interpolate( walberla::numeric_cast< walberla::float64 >( 0 ), level, flag );
    }
 
    if ( storage_->hasGlobalCells() )
@@ -95,12 +99,12 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_srcVertex = cell.getData( src.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_srcEdge   = cell.getData( src.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_dstVertex = cell.getData( dst.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_dstEdge   = cell.getData( dst.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_kVertex   = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_kEdge     = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_srcVertex = cell.getData( src.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_srcEdge   = cell.getData( src.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dstVertex = cell.getData( dst.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dstEdge   = cell.getData( dst.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_kVertex   = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_kEdge     = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -111,25 +115,27 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
             if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() )
             {
                auto arrayIdx             = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() );
-               _data_dstVertex[arrayIdx] = real_t( 0 );
+               _data_dstVertex[arrayIdx] = walberla::float64( 0 );
             }
          }
          edgedof::macrocell::setBoundaryToZero( level, cell, dst.getEdgeDoFFunction().getCellDataID() );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_3D(
 
@@ -153,10 +159,12 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
              macro_vertex_coord_id_3comp2,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.getVertexDoFFunction().communicateAdditively< Cell, Face >(
@@ -169,6 +177,7 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
           level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.getEdgeDoFFunction().communicateAdditively< Cell, Edge >(
           level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
    else
    {
@@ -177,12 +186,12 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
          Face& face = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_srcVertex = face.getData( src.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_srcEdge   = face.getData( src.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_dstVertex = face.getData( dst.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_dstEdge   = face.getData( dst.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_kVertex   = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_kEdge     = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_srcVertex = face.getData( src.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_srcEdge   = face.getData( src.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_dstVertex = face.getData( dst.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_dstEdge   = face.getData( dst.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_kVertex   = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_kEdge     = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -193,7 +202,7 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
             if ( vertexdof::macroface::isVertexOnBoundary( level, idx ) )
             {
                auto arrayIdx             = vertexdof::macroface::index( level, idx.x(), idx.y() );
-               _data_dstVertex[arrayIdx] = walberla::numeric_cast< real_t >( 0 );
+               _data_dstVertex[arrayIdx] = walberla::numeric_cast< walberla::float64 >( 0 );
             }
          }
          for ( const auto& idx : edgedof::macroface::Iterator( level ) )
@@ -203,19 +212,21 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
                if ( !edgedof::macroface::isInnerEdgeDoF( level, idx, orientation ) )
                {
                   auto arrayIdx           = edgedof::macroface::index( level, idx.x(), idx.y(), orientation );
-                  _data_dstEdge[arrayIdx] = walberla::numeric_cast< real_t >( 0 );
+                  _data_dstEdge[arrayIdx] = walberla::numeric_cast< walberla::float64 >( 0 );
                }
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_2D(
 
@@ -233,10 +244,12 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
              macro_vertex_coord_id_2comp1,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.getVertexDoFFunction().communicateAdditively< Face, Edge >(
@@ -245,7 +258,10 @@ void P2ElementwiseDivKGrad::apply( const P2Function< real_t >& src,
           level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.getEdgeDoFFunction().communicateAdditively< Face, Edge >(
           level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
+
+   this->stopTiming( "apply" );
 }
 void P2ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                                       const P2Function< idx_t >&                  src,
@@ -253,6 +269,8 @@ void P2ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
                                       uint_t                                      level,
                                       DoFType                                     flag ) const
 {
+   this->startTiming( "toMatrix" );
+
    // We currently ignore the flag provided!
    if ( flag != All )
    {
@@ -261,36 +279,40 @@ void P2ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
 
    if ( storage_->hasGlobalCells() )
    {
+      this->timingTree_->start( "pre-communication" );
       k.communicate< Face, Cell >( level );
       k.communicate< Edge, Cell >( level );
       k.communicate< Vertex, Cell >( level );
+      this->timingTree_->stop( "pre-communication" );
 
       for ( auto& it : storage_->getCells() )
       {
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data
-         idx_t*  _data_srcVertex = cell.getData( src.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         idx_t*  _data_srcEdge   = cell.getData( src.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-         idx_t*  _data_dstVertex = cell.getData( dst.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         idx_t*  _data_dstEdge   = cell.getData( dst.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_kVertex   = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-         real_t* _data_kEdge     = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         idx_t*             _data_srcVertex = cell.getData( src.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         idx_t*             _data_srcEdge   = cell.getData( src.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+         idx_t*             _data_dstVertex = cell.getData( dst.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         idx_t*             _data_dstEdge   = cell.getData( dst.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_kVertex   = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+         walberla::float64* _data_kEdge     = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_3D(
 
@@ -315,32 +337,37 @@ void P2ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
    else
    {
+      this->timingTree_->start( "pre-communication" );
       communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
+      this->timingTree_->stop( "pre-communication" );
 
       for ( auto& it : storage_->getFaces() )
       {
          Face& face = *it.second;
 
          // get hold of the actual numerical data
-         idx_t*  _data_srcVertex = face.getData( src.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         idx_t*  _data_srcEdge   = face.getData( src.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-         idx_t*  _data_dstVertex = face.getData( dst.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         idx_t*  _data_dstEdge   = face.getData( dst.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_kVertex   = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-         real_t* _data_kEdge     = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         idx_t*             _data_srcVertex = face.getData( src.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         idx_t*             _data_srcEdge   = face.getData( src.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+         idx_t*             _data_dstVertex = face.getData( dst.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         idx_t*             _data_dstEdge   = face.getData( dst.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_kVertex   = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_kEdge     = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_2D(
 
@@ -359,14 +386,19 @@ void P2ElementwiseDivKGrad::toMatrix( const std::shared_ptr< SparseMatrixProxy >
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
+   this->stopTiming( "toMatrix" );
 }
 void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
 {
+   this->startTiming( "computeInverseDiagonalOperatorValues" );
+
    if ( invDiag_ == nullptr )
    {
-      invDiag_ = std::make_shared< P2Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
+      invDiag_ =
+          std::make_shared< P2Function< walberla::float64 > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
    }
 
    for ( uint_t level = minLevel_; level <= maxLevel_; level++ )
@@ -375,35 +407,40 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
 
       if ( storage_->hasGlobalCells() )
       {
+         this->timingTree_->start( "pre-communication" );
          k.communicate< Face, Cell >( level );
          k.communicate< Edge, Cell >( level );
          k.communicate< Vertex, Cell >( level );
+         this->timingTree_->stop( "pre-communication" );
 
          for ( auto& it : storage_->getCells() )
          {
             Cell& cell = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_Vertex =
+            walberla::float64* _data_invDiag_Vertex =
                 cell.getData( ( *invDiag_ ).getVertexDoFFunction().getCellDataID() )->getPointer( level );
-            real_t* _data_invDiag_Edge = cell.getData( ( *invDiag_ ).getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-            real_t* _data_kVertex      = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
-            real_t* _data_kEdge        = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-            const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-            const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-            const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-            const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+            walberla::float64* _data_invDiag_Edge =
+                cell.getData( ( *invDiag_ ).getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+            walberla::float64* _data_kVertex = cell.getData( k.getVertexDoFFunction().getCellDataID() )->getPointer( level );
+            walberla::float64* _data_kEdge   = cell.getData( k.getEdgeDoFFunction().getCellDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+            const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+            const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+            const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+            const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_3D(
 
@@ -425,10 +462,12 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_3comp2,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).getVertexDoFFunction().communicateAdditively< Cell, Face >( level );
@@ -436,30 +475,36 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
          ( *invDiag_ ).getVertexDoFFunction().communicateAdditively< Cell, Vertex >( level );
          ( *invDiag_ ).getEdgeDoFFunction().communicateAdditively< Cell, Face >( level );
          ( *invDiag_ ).getEdgeDoFFunction().communicateAdditively< Cell, Edge >( level );
+         this->timingTree_->stop( "post-communication" );
       }
       else
       {
+         this->timingTree_->start( "pre-communication" );
          communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH );
+         this->timingTree_->stop( "pre-communication" );
 
          for ( auto& it : storage_->getFaces() )
          {
             Face& face = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_Vertex =
+            walberla::float64* _data_invDiag_Vertex =
                 face.getData( ( *invDiag_ ).getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-            real_t* _data_invDiag_Edge = face.getData( ( *invDiag_ ).getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-            real_t* _data_kVertex      = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
-            real_t* _data_kEdge        = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+            walberla::float64* _data_invDiag_Edge =
+                face.getData( ( *invDiag_ ).getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+            walberla::float64* _data_kVertex = face.getData( k.getVertexDoFFunction().getFaceDataID() )->getPointer( level );
+            walberla::float64* _data_kEdge   = face.getData( k.getEdgeDoFFunction().getFaceDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_2D(
 
@@ -475,21 +520,26 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_2comp1,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).getVertexDoFFunction().communicateAdditively< Face, Edge >( level );
          ( *invDiag_ ).getVertexDoFFunction().communicateAdditively< Face, Vertex >( level );
          ( *invDiag_ ).getEdgeDoFFunction().communicateAdditively< Face, Edge >( level );
+         this->timingTree_->stop( "post-communication" );
       }
 
       ( *invDiag_ ).invertElementwise( level );
    }
+
+   this->stopTiming( "computeInverseDiagonalOperatorValues" );
 }
-std::shared_ptr< P2Function< real_t > > P2ElementwiseDivKGrad::getInverseDiagonalValues() const
+std::shared_ptr< P2Function< walberla::float64 > > P2ElementwiseDivKGrad::getInverseDiagonalValues() const
 {
    return invDiag_;
 }
diff --git a/operators/div_k_grad/P2ElementwiseDivKGrad.hpp b/operators/div_k_grad/P2ElementwiseDivKGrad.hpp
index 8fa931acff32f2d0707284c1c3a6ca36855a2413..6479c79e1b396493ceabaf9925f3d296eeddb861 100644
--- a/operators/div_k_grad/P2ElementwiseDivKGrad.hpp
+++ b/operators/div_k_grad/P2ElementwiseDivKGrad.hpp
@@ -43,20 +43,32 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-class P2ElementwiseDivKGrad : public Operator< P2Function< real_t >, P2Function< real_t > >,
-                              public OperatorWithInverseDiagonal< P2Function< real_t > >
+/// Diffusion operator with a scalar coefficient.
+///
+/// Geometry map: IdentityMap
+///
+/// Weak formulation
+///
+///     u: trial function (space: Lagrange, degree: 2)
+///     v: test function  (space: Lagrange, degree: 2)
+///     k: coefficient    (space: Lagrange, degree: 2)
+///
+///     ∫ k ∇u · ∇v
+
+class P2ElementwiseDivKGrad : public Operator< P2Function< walberla::float64 >, P2Function< walberla::float64 > >,
+                              public OperatorWithInverseDiagonal< P2Function< walberla::float64 > >
 {
  public:
    P2ElementwiseDivKGrad( const std::shared_ptr< PrimitiveStorage >& storage,
                           size_t                                     minLevel,
                           size_t                                     maxLevel,
-                          const P2Function< real_t >&                _k );
+                          const P2Function< walberla::float64 >&     _k );
 
-   void apply( const P2Function< real_t >& src,
-               const P2Function< real_t >& dst,
-               uint_t                      level,
-               DoFType                     flag,
-               UpdateType                  updateType = Replace ) const;
+   void apply( const P2Function< walberla::float64 >& src,
+               const P2Function< walberla::float64 >& dst,
+               uint_t                                 level,
+               DoFType                                flag,
+               UpdateType                             updateType = Replace ) const;
 
    void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                   const P2Function< idx_t >&                  src,
@@ -66,149 +78,149 @@ class P2ElementwiseDivKGrad : public Operator< P2Function< real_t >, P2Function<
 
    void computeInverseDiagonalOperatorValues();
 
-   std::shared_ptr< P2Function< real_t > > getInverseDiagonalValues() const;
+   std::shared_ptr< P2Function< walberla::float64 > > getInverseDiagonalValues() const;
 
  protected:
  private:
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    258     354       0       0      0              0                 0              0
-   void apply_macro_2D( real_t* RESTRICT _data_dstEdge,
-                        real_t* RESTRICT _data_dstVertex,
-                        real_t* RESTRICT _data_kEdge,
-                        real_t* RESTRICT _data_kVertex,
-                        real_t* RESTRICT _data_srcEdge,
-                        real_t* RESTRICT _data_srcVertex,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_2D( walberla::float64* RESTRICT _data_dstEdge,
+                        walberla::float64* RESTRICT _data_dstVertex,
+                        walberla::float64* RESTRICT _data_kEdge,
+                        walberla::float64* RESTRICT _data_kVertex,
+                        walberla::float64* RESTRICT _data_srcEdge,
+                        walberla::float64* RESTRICT _data_srcVertex,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///   1180    1568       0       0      0              0                 0              0
-   void apply_macro_3D( real_t* RESTRICT _data_dstEdge,
-                        real_t* RESTRICT _data_dstVertex,
-                        real_t* RESTRICT _data_kEdge,
-                        real_t* RESTRICT _data_kVertex,
-                        real_t* RESTRICT _data_srcEdge,
-                        real_t* RESTRICT _data_srcVertex,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_0comp2,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_1comp2,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        real_t           macro_vertex_coord_id_2comp2,
-                        real_t           macro_vertex_coord_id_3comp0,
-                        real_t           macro_vertex_coord_id_3comp1,
-                        real_t           macro_vertex_coord_id_3comp2,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_3D( walberla::float64* RESTRICT _data_dstEdge,
+                        walberla::float64* RESTRICT _data_dstVertex,
+                        walberla::float64* RESTRICT _data_kEdge,
+                        walberla::float64* RESTRICT _data_kVertex,
+                        walberla::float64* RESTRICT _data_srcEdge,
+                        walberla::float64* RESTRICT _data_srcVertex,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_0comp2,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp2,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp2,
+                        walberla::float64           macro_vertex_coord_id_3comp0,
+                        walberla::float64           macro_vertex_coord_id_3comp1,
+                        walberla::float64           macro_vertex_coord_id_3comp2,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    222     318       0       0      0              0                 0              3
    void toMatrix_macro_2D( idx_t* RESTRICT                      _data_dstEdge,
                            idx_t* RESTRICT                      _data_dstVertex,
-                           real_t* RESTRICT                     _data_kEdge,
-                           real_t* RESTRICT                     _data_kVertex,
+                           walberla::float64* RESTRICT          _data_kEdge,
+                           walberla::float64* RESTRICT          _data_kVertex,
                            idx_t* RESTRICT                      _data_srcEdge,
                            idx_t* RESTRICT                      _data_srcVertex,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///   1080    1468       0       0      0              0                 0              3
    void toMatrix_macro_3D( idx_t* RESTRICT                      _data_dstEdge,
                            idx_t* RESTRICT                      _data_dstVertex,
-                           real_t* RESTRICT                     _data_kEdge,
-                           real_t* RESTRICT                     _data_kVertex,
+                           walberla::float64* RESTRICT          _data_kEdge,
+                           walberla::float64* RESTRICT          _data_kVertex,
                            idx_t* RESTRICT                      _data_srcEdge,
                            idx_t* RESTRICT                      _data_srcVertex,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_0comp2,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_1comp2,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
-                           real_t                               macro_vertex_coord_id_2comp2,
-                           real_t                               macro_vertex_coord_id_3comp0,
-                           real_t                               macro_vertex_coord_id_3comp1,
-                           real_t                               macro_vertex_coord_id_3comp2,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp2,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp2,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp2,
+                           walberla::float64                    macro_vertex_coord_id_3comp0,
+                           walberla::float64                    macro_vertex_coord_id_3comp1,
+                           walberla::float64                    macro_vertex_coord_id_3comp2,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    138     171       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_2D( real_t* RESTRICT _data_invDiag_Edge,
-                                                       real_t* RESTRICT _data_invDiag_Vertex,
-                                                       real_t* RESTRICT _data_kEdge,
-                                                       real_t* RESTRICT _data_kVertex,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
+   void computeInverseDiagonalOperatorValues_macro_2D( walberla::float64* RESTRICT _data_invDiag_Edge,
+                                                       walberla::float64* RESTRICT _data_invDiag_Vertex,
+                                                       walberla::float64* RESTRICT _data_kEdge,
+                                                       walberla::float64* RESTRICT _data_kVertex,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///    430     604       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_Edge,
-                                                       real_t* RESTRICT _data_invDiag_Vertex,
-                                                       real_t* RESTRICT _data_kEdge,
-                                                       real_t* RESTRICT _data_kVertex,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_0comp2,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_1comp2,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       real_t           macro_vertex_coord_id_2comp2,
-                                                       real_t           macro_vertex_coord_id_3comp0,
-                                                       real_t           macro_vertex_coord_id_3comp1,
-                                                       real_t           macro_vertex_coord_id_3comp2,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
-
-   std::shared_ptr< P2Function< real_t > > invDiag_;
-   P2Function< real_t >                    k;
+   void computeInverseDiagonalOperatorValues_macro_3D( walberla::float64* RESTRICT _data_invDiag_Edge,
+                                                       walberla::float64* RESTRICT _data_invDiag_Vertex,
+                                                       walberla::float64* RESTRICT _data_kEdge,
+                                                       walberla::float64* RESTRICT _data_kVertex,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_0comp2,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp2,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp2,
+                                                       walberla::float64           macro_vertex_coord_id_3comp0,
+                                                       walberla::float64           macro_vertex_coord_id_3comp1,
+                                                       walberla::float64           macro_vertex_coord_id_3comp2,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
+
+   std::shared_ptr< P2Function< walberla::float64 > > invDiag_;
+   P2Function< walberla::float64 >                    k;
 };
 
 } // namespace operatorgeneration
diff --git a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_2D.cpp b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_2D.cpp
index 572078e5c760a3a6eb50603a0e3b0837ef34638c..31ee00f74fe779c7d8303d8763725624bc9d3765 100644
--- a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_2D.cpp
+++ b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_2D.cpp
@@ -56,35 +56,35 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -105,13 +105,13 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -128,27 +128,27 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_2*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1));
-                   const real_t q_tmp_0_1 = tmp_q_2*(jac_affine_inv_0_0_GRAY*tmp_q_0 + jac_affine_inv_0_1_GRAY*tmp_q_1);
-                   const real_t q_tmp_0_2 = tmp_q_2*(jac_affine_inv_1_0_GRAY*tmp_q_0 + jac_affine_inv_1_1_GRAY*tmp_q_1);
-                   const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-                   const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
-                   const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                   const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*tmp_qloop_0 + jac_affine_inv_0_1_GRAY*tmp_qloop_1);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(jac_affine_inv_1_0_GRAY*tmp_qloop_0 + jac_affine_inv_1_1_GRAY*tmp_qloop_1);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -156,39 +156,39 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t Dummy_1808 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_1809 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 Dummy_1843 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_1844 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -209,13 +209,13 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1808,Dummy_1808,Dummy_1808,Dummy_1808),_mm256_set_pd(Dummy_1808,Dummy_1808,Dummy_1808,Dummy_1808)),_mm256_mul_pd(_mm256_set_pd(Dummy_1809,Dummy_1809,Dummy_1809,Dummy_1809),_mm256_set_pd(Dummy_1809,Dummy_1809,Dummy_1809,Dummy_1809))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1808,Dummy_1808,Dummy_1808,Dummy_1808),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(Dummy_1809,Dummy_1809,Dummy_1809,Dummy_1809),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1808,Dummy_1808,Dummy_1808,Dummy_1808),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(Dummy_1809,Dummy_1809,Dummy_1809,Dummy_1809),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1843,Dummy_1843,Dummy_1843,Dummy_1843),_mm256_set_pd(Dummy_1843,Dummy_1843,Dummy_1843,Dummy_1843)),_mm256_mul_pd(_mm256_set_pd(Dummy_1844,Dummy_1844,Dummy_1844,Dummy_1844),_mm256_set_pd(Dummy_1844,Dummy_1844,Dummy_1844,Dummy_1844))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1843,Dummy_1843,Dummy_1843,Dummy_1843),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(Dummy_1844,Dummy_1844,Dummy_1844,Dummy_1844),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1843,Dummy_1843,Dummy_1843,Dummy_1843),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(Dummy_1844,Dummy_1844,Dummy_1844,Dummy_1844),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -232,27 +232,27 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_2*((Dummy_1808*Dummy_1808) + (Dummy_1809*Dummy_1809));
-                   const real_t q_tmp_0_1 = tmp_q_2*(Dummy_1808*jac_affine_inv_0_0_BLUE + Dummy_1809*jac_affine_inv_0_1_BLUE);
-                   const real_t q_tmp_0_2 = tmp_q_2*(Dummy_1808*jac_affine_inv_1_0_BLUE + Dummy_1809*jac_affine_inv_1_1_BLUE);
-                   const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                   const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
-                   const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
+                   const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((Dummy_1843*Dummy_1843) + (Dummy_1844*Dummy_1844));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(Dummy_1843*jac_affine_inv_0_0_BLUE + Dummy_1844*jac_affine_inv_0_1_BLUE);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(Dummy_1843*jac_affine_inv_1_0_BLUE + Dummy_1844*jac_affine_inv_1_1_BLUE);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -260,9 +260,9 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_3D.cpp b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_3D.cpp
index 6965369177524d63e5cffdaa2facfbeaaa3263de..04daea1f551346eba67764d86d3c3be97cb034ed 100644
--- a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_3D.cpp
+++ b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_apply_macro_3D.cpp
@@ -56,59 +56,59 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t tmp_q_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_qloop_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -136,17 +136,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))),_mm256_mul_pd(_mm256_set_pd(tmp_q_2,tmp_q_2,tmp_q_2,tmp_q_2),_mm256_set_pd(tmp_q_2,tmp_q_2,tmp_q_2,tmp_q_2))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(tmp_q_2,tmp_q_2,tmp_q_2,tmp_q_2))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(tmp_q_2,tmp_q_2,tmp_q_2,tmp_q_2))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(tmp_q_0,tmp_q_0,tmp_q_0,tmp_q_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(tmp_q_1,tmp_q_1,tmp_q_1,tmp_q_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(tmp_q_2,tmp_q_2,tmp_q_2,tmp_q_2))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))),_mm256_mul_pd(_mm256_set_pd(tmp_qloop_2,tmp_qloop_2,tmp_qloop_2,tmp_qloop_2),_mm256_set_pd(tmp_qloop_2,tmp_qloop_2,tmp_qloop_2,tmp_qloop_2))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(tmp_qloop_2,tmp_qloop_2,tmp_qloop_2,tmp_qloop_2))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(tmp_qloop_2,tmp_qloop_2,tmp_qloop_2,tmp_qloop_2))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(tmp_qloop_0,tmp_qloop_0,tmp_qloop_0,tmp_qloop_0)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(tmp_qloop_1,tmp_qloop_1,tmp_qloop_1,tmp_qloop_1))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(tmp_qloop_2,tmp_qloop_2,tmp_qloop_2,tmp_qloop_2))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -169,37 +169,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1) + (tmp_q_2*tmp_q_2));
-                   const real_t q_tmp_0_1 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*tmp_q_0 + jac_affine_inv_0_1_WHITE_UP*tmp_q_1 + jac_affine_inv_0_2_WHITE_UP*tmp_q_2);
-                   const real_t q_tmp_0_2 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*tmp_q_0 + jac_affine_inv_1_1_WHITE_UP*tmp_q_1 + jac_affine_inv_1_2_WHITE_UP*tmp_q_2);
-                   const real_t q_tmp_0_3 = tmp_q_3*(jac_affine_inv_2_0_WHITE_UP*tmp_q_0 + jac_affine_inv_2_1_WHITE_UP*tmp_q_1 + jac_affine_inv_2_2_WHITE_UP*tmp_q_2);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1) + (tmp_qloop_2*tmp_qloop_2));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_0_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_2);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -211,10 +211,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -222,60 +222,60 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t Dummy_1918 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_1919 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_1920 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 Dummy_1953 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_1954 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_1955 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -303,17 +303,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1918,Dummy_1918,Dummy_1918,Dummy_1918),_mm256_set_pd(Dummy_1918,Dummy_1918,Dummy_1918,Dummy_1918)),_mm256_mul_pd(_mm256_set_pd(Dummy_1919,Dummy_1919,Dummy_1919,Dummy_1919),_mm256_set_pd(Dummy_1919,Dummy_1919,Dummy_1919,Dummy_1919))),_mm256_mul_pd(_mm256_set_pd(Dummy_1920,Dummy_1920,Dummy_1920,Dummy_1920),_mm256_set_pd(Dummy_1920,Dummy_1920,Dummy_1920,Dummy_1920))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1918,Dummy_1918,Dummy_1918,Dummy_1918),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1919,Dummy_1919,Dummy_1919,Dummy_1919),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1920,Dummy_1920,Dummy_1920,Dummy_1920),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1918,Dummy_1918,Dummy_1918,Dummy_1918),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1919,Dummy_1919,Dummy_1919,Dummy_1919),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1920,Dummy_1920,Dummy_1920,Dummy_1920),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1918,Dummy_1918,Dummy_1918,Dummy_1918),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1919,Dummy_1919,Dummy_1919,Dummy_1919),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1920,Dummy_1920,Dummy_1920,Dummy_1920),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1953,Dummy_1953,Dummy_1953,Dummy_1953),_mm256_set_pd(Dummy_1953,Dummy_1953,Dummy_1953,Dummy_1953)),_mm256_mul_pd(_mm256_set_pd(Dummy_1954,Dummy_1954,Dummy_1954,Dummy_1954),_mm256_set_pd(Dummy_1954,Dummy_1954,Dummy_1954,Dummy_1954))),_mm256_mul_pd(_mm256_set_pd(Dummy_1955,Dummy_1955,Dummy_1955,Dummy_1955),_mm256_set_pd(Dummy_1955,Dummy_1955,Dummy_1955,Dummy_1955))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1953,Dummy_1953,Dummy_1953,Dummy_1953),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1954,Dummy_1954,Dummy_1954,Dummy_1954),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1955,Dummy_1955,Dummy_1955,Dummy_1955),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1953,Dummy_1953,Dummy_1953,Dummy_1953),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1954,Dummy_1954,Dummy_1954,Dummy_1954),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1955,Dummy_1955,Dummy_1955,Dummy_1955),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1953,Dummy_1953,Dummy_1953,Dummy_1953),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1954,Dummy_1954,Dummy_1954,Dummy_1954),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1955,Dummy_1955,Dummy_1955,Dummy_1955),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -336,37 +336,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1918*Dummy_1918) + (Dummy_1919*Dummy_1919) + (Dummy_1920*Dummy_1920));
-                   const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1918*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_0_2_WHITE_DOWN);
-                   const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1918*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_1_2_WHITE_DOWN);
-                   const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1918*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_2_2_WHITE_DOWN);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1953*Dummy_1953) + (Dummy_1954*Dummy_1954) + (Dummy_1955*Dummy_1955));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_0_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_1_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_2_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -378,10 +378,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -389,54 +389,54 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t Dummy_1921 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_1922 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_1923 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 Dummy_1956 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_1957 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_1958 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -464,17 +464,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1921,Dummy_1921,Dummy_1921,Dummy_1921),_mm256_set_pd(Dummy_1921,Dummy_1921,Dummy_1921,Dummy_1921)),_mm256_mul_pd(_mm256_set_pd(Dummy_1922,Dummy_1922,Dummy_1922,Dummy_1922),_mm256_set_pd(Dummy_1922,Dummy_1922,Dummy_1922,Dummy_1922))),_mm256_mul_pd(_mm256_set_pd(Dummy_1923,Dummy_1923,Dummy_1923,Dummy_1923),_mm256_set_pd(Dummy_1923,Dummy_1923,Dummy_1923,Dummy_1923))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1921,Dummy_1921,Dummy_1921,Dummy_1921),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1922,Dummy_1922,Dummy_1922,Dummy_1922),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1923,Dummy_1923,Dummy_1923,Dummy_1923),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1921,Dummy_1921,Dummy_1921,Dummy_1921),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1922,Dummy_1922,Dummy_1922,Dummy_1922),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1923,Dummy_1923,Dummy_1923,Dummy_1923),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1921,Dummy_1921,Dummy_1921,Dummy_1921),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1922,Dummy_1922,Dummy_1922,Dummy_1922),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1923,Dummy_1923,Dummy_1923,Dummy_1923),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1956,Dummy_1956,Dummy_1956,Dummy_1956),_mm256_set_pd(Dummy_1956,Dummy_1956,Dummy_1956,Dummy_1956)),_mm256_mul_pd(_mm256_set_pd(Dummy_1957,Dummy_1957,Dummy_1957,Dummy_1957),_mm256_set_pd(Dummy_1957,Dummy_1957,Dummy_1957,Dummy_1957))),_mm256_mul_pd(_mm256_set_pd(Dummy_1958,Dummy_1958,Dummy_1958,Dummy_1958),_mm256_set_pd(Dummy_1958,Dummy_1958,Dummy_1958,Dummy_1958))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1956,Dummy_1956,Dummy_1956,Dummy_1956),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1957,Dummy_1957,Dummy_1957,Dummy_1957),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1958,Dummy_1958,Dummy_1958,Dummy_1958),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1956,Dummy_1956,Dummy_1956,Dummy_1956),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1957,Dummy_1957,Dummy_1957,Dummy_1957),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1958,Dummy_1958,Dummy_1958,Dummy_1958),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1956,Dummy_1956,Dummy_1956,Dummy_1956),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1957,Dummy_1957,Dummy_1957,Dummy_1957),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1958,Dummy_1958,Dummy_1958,Dummy_1958),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -497,37 +497,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1921*Dummy_1921) + (Dummy_1922*Dummy_1922) + (Dummy_1923*Dummy_1923));
-                   const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1921*jac_affine_inv_0_0_BLUE_UP + Dummy_1922*jac_affine_inv_0_1_BLUE_UP + Dummy_1923*jac_affine_inv_0_2_BLUE_UP);
-                   const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1921*jac_affine_inv_1_0_BLUE_UP + Dummy_1922*jac_affine_inv_1_1_BLUE_UP + Dummy_1923*jac_affine_inv_1_2_BLUE_UP);
-                   const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1921*jac_affine_inv_2_0_BLUE_UP + Dummy_1922*jac_affine_inv_2_1_BLUE_UP + Dummy_1923*jac_affine_inv_2_2_BLUE_UP);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1956*Dummy_1956) + (Dummy_1957*Dummy_1957) + (Dummy_1958*Dummy_1958));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_0_0_BLUE_UP + Dummy_1957*jac_affine_inv_0_1_BLUE_UP + Dummy_1958*jac_affine_inv_0_2_BLUE_UP);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_1_0_BLUE_UP + Dummy_1957*jac_affine_inv_1_1_BLUE_UP + Dummy_1958*jac_affine_inv_1_2_BLUE_UP);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_2_0_BLUE_UP + Dummy_1957*jac_affine_inv_2_1_BLUE_UP + Dummy_1958*jac_affine_inv_2_2_BLUE_UP);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -539,10 +539,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -550,57 +550,57 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t Dummy_1924 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_1925 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_1926 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 Dummy_1959 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_1960 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_1961 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -628,17 +628,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1924,Dummy_1924,Dummy_1924,Dummy_1924),_mm256_set_pd(Dummy_1924,Dummy_1924,Dummy_1924,Dummy_1924)),_mm256_mul_pd(_mm256_set_pd(Dummy_1925,Dummy_1925,Dummy_1925,Dummy_1925),_mm256_set_pd(Dummy_1925,Dummy_1925,Dummy_1925,Dummy_1925))),_mm256_mul_pd(_mm256_set_pd(Dummy_1926,Dummy_1926,Dummy_1926,Dummy_1926),_mm256_set_pd(Dummy_1926,Dummy_1926,Dummy_1926,Dummy_1926))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1924,Dummy_1924,Dummy_1924,Dummy_1924),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1925,Dummy_1925,Dummy_1925,Dummy_1925),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1926,Dummy_1926,Dummy_1926,Dummy_1926),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1924,Dummy_1924,Dummy_1924,Dummy_1924),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1925,Dummy_1925,Dummy_1925,Dummy_1925),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1926,Dummy_1926,Dummy_1926,Dummy_1926),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1924,Dummy_1924,Dummy_1924,Dummy_1924),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1925,Dummy_1925,Dummy_1925,Dummy_1925),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1926,Dummy_1926,Dummy_1926,Dummy_1926),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1959,Dummy_1959,Dummy_1959,Dummy_1959),_mm256_set_pd(Dummy_1959,Dummy_1959,Dummy_1959,Dummy_1959)),_mm256_mul_pd(_mm256_set_pd(Dummy_1960,Dummy_1960,Dummy_1960,Dummy_1960),_mm256_set_pd(Dummy_1960,Dummy_1960,Dummy_1960,Dummy_1960))),_mm256_mul_pd(_mm256_set_pd(Dummy_1961,Dummy_1961,Dummy_1961,Dummy_1961),_mm256_set_pd(Dummy_1961,Dummy_1961,Dummy_1961,Dummy_1961))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1959,Dummy_1959,Dummy_1959,Dummy_1959),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1960,Dummy_1960,Dummy_1960,Dummy_1960),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1961,Dummy_1961,Dummy_1961,Dummy_1961),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1959,Dummy_1959,Dummy_1959,Dummy_1959),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1960,Dummy_1960,Dummy_1960,Dummy_1960),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1961,Dummy_1961,Dummy_1961,Dummy_1961),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1959,Dummy_1959,Dummy_1959,Dummy_1959),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1960,Dummy_1960,Dummy_1960,Dummy_1960),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1961,Dummy_1961,Dummy_1961,Dummy_1961),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -661,37 +661,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1924*Dummy_1924) + (Dummy_1925*Dummy_1925) + (Dummy_1926*Dummy_1926));
-                   const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1924*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_0_2_BLUE_DOWN);
-                   const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1924*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_1_2_BLUE_DOWN);
-                   const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1924*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_2_2_BLUE_DOWN);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1959*Dummy_1959) + (Dummy_1960*Dummy_1960) + (Dummy_1961*Dummy_1961));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_0_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_1_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_2_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -703,10 +703,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -714,54 +714,54 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t Dummy_1927 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_1928 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_1929 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 Dummy_1962 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_1963 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_1964 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -789,17 +789,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1927,Dummy_1927,Dummy_1927,Dummy_1927),_mm256_set_pd(Dummy_1927,Dummy_1927,Dummy_1927,Dummy_1927)),_mm256_mul_pd(_mm256_set_pd(Dummy_1928,Dummy_1928,Dummy_1928,Dummy_1928),_mm256_set_pd(Dummy_1928,Dummy_1928,Dummy_1928,Dummy_1928))),_mm256_mul_pd(_mm256_set_pd(Dummy_1929,Dummy_1929,Dummy_1929,Dummy_1929),_mm256_set_pd(Dummy_1929,Dummy_1929,Dummy_1929,Dummy_1929))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1927,Dummy_1927,Dummy_1927,Dummy_1927),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1928,Dummy_1928,Dummy_1928,Dummy_1928),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1929,Dummy_1929,Dummy_1929,Dummy_1929),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1927,Dummy_1927,Dummy_1927,Dummy_1927),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1928,Dummy_1928,Dummy_1928,Dummy_1928),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1929,Dummy_1929,Dummy_1929,Dummy_1929),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1927,Dummy_1927,Dummy_1927,Dummy_1927),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1928,Dummy_1928,Dummy_1928,Dummy_1928),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1929,Dummy_1929,Dummy_1929,Dummy_1929),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1962,Dummy_1962,Dummy_1962,Dummy_1962),_mm256_set_pd(Dummy_1962,Dummy_1962,Dummy_1962,Dummy_1962)),_mm256_mul_pd(_mm256_set_pd(Dummy_1963,Dummy_1963,Dummy_1963,Dummy_1963),_mm256_set_pd(Dummy_1963,Dummy_1963,Dummy_1963,Dummy_1963))),_mm256_mul_pd(_mm256_set_pd(Dummy_1964,Dummy_1964,Dummy_1964,Dummy_1964),_mm256_set_pd(Dummy_1964,Dummy_1964,Dummy_1964,Dummy_1964))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1962,Dummy_1962,Dummy_1962,Dummy_1962),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1963,Dummy_1963,Dummy_1963,Dummy_1963),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1964,Dummy_1964,Dummy_1964,Dummy_1964),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1962,Dummy_1962,Dummy_1962,Dummy_1962),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1963,Dummy_1963,Dummy_1963,Dummy_1963),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1964,Dummy_1964,Dummy_1964,Dummy_1964),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1962,Dummy_1962,Dummy_1962,Dummy_1962),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(Dummy_1963,Dummy_1963,Dummy_1963,Dummy_1963),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(Dummy_1964,Dummy_1964,Dummy_1964,Dummy_1964),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -822,37 +822,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1927*Dummy_1927) + (Dummy_1928*Dummy_1928) + (Dummy_1929*Dummy_1929));
-                   const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1927*jac_affine_inv_0_0_GREEN_UP + Dummy_1928*jac_affine_inv_0_1_GREEN_UP + Dummy_1929*jac_affine_inv_0_2_GREEN_UP);
-                   const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1927*jac_affine_inv_1_0_GREEN_UP + Dummy_1928*jac_affine_inv_1_1_GREEN_UP + Dummy_1929*jac_affine_inv_1_2_GREEN_UP);
-                   const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1927*jac_affine_inv_2_0_GREEN_UP + Dummy_1928*jac_affine_inv_2_1_GREEN_UP + Dummy_1929*jac_affine_inv_2_2_GREEN_UP);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1962*Dummy_1962) + (Dummy_1963*Dummy_1963) + (Dummy_1964*Dummy_1964));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_0_0_GREEN_UP + Dummy_1963*jac_affine_inv_0_1_GREEN_UP + Dummy_1964*jac_affine_inv_0_2_GREEN_UP);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_1_0_GREEN_UP + Dummy_1963*jac_affine_inv_1_1_GREEN_UP + Dummy_1964*jac_affine_inv_1_2_GREEN_UP);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_2_0_GREEN_UP + Dummy_1963*jac_affine_inv_2_1_GREEN_UP + Dummy_1964*jac_affine_inv_2_2_GREEN_UP);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -864,10 +864,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -875,57 +875,57 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t Dummy_1930 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_1931 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_1932 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 Dummy_1965 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_1966 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_1967 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -953,17 +953,17 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1930,Dummy_1930,Dummy_1930,Dummy_1930),_mm256_set_pd(Dummy_1930,Dummy_1930,Dummy_1930,Dummy_1930)),_mm256_mul_pd(_mm256_set_pd(Dummy_1931,Dummy_1931,Dummy_1931,Dummy_1931),_mm256_set_pd(Dummy_1931,Dummy_1931,Dummy_1931,Dummy_1931))),_mm256_mul_pd(_mm256_set_pd(Dummy_1932,Dummy_1932,Dummy_1932,Dummy_1932),_mm256_set_pd(Dummy_1932,Dummy_1932,Dummy_1932,Dummy_1932))));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1930,Dummy_1930,Dummy_1930,Dummy_1930),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1931,Dummy_1931,Dummy_1931,Dummy_1931),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1932,Dummy_1932,Dummy_1932,Dummy_1932),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1930,Dummy_1930,Dummy_1930,Dummy_1930),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1931,Dummy_1931,Dummy_1931,Dummy_1931),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1932,Dummy_1932,Dummy_1932,Dummy_1932),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1930,Dummy_1930,Dummy_1930,Dummy_1930),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1931,Dummy_1931,Dummy_1931,Dummy_1931),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1932,Dummy_1932,Dummy_1932,Dummy_1932),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1965,Dummy_1965,Dummy_1965,Dummy_1965),_mm256_set_pd(Dummy_1965,Dummy_1965,Dummy_1965,Dummy_1965)),_mm256_mul_pd(_mm256_set_pd(Dummy_1966,Dummy_1966,Dummy_1966,Dummy_1966),_mm256_set_pd(Dummy_1966,Dummy_1966,Dummy_1966,Dummy_1966))),_mm256_mul_pd(_mm256_set_pd(Dummy_1967,Dummy_1967,Dummy_1967,Dummy_1967),_mm256_set_pd(Dummy_1967,Dummy_1967,Dummy_1967,Dummy_1967))));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1965,Dummy_1965,Dummy_1965,Dummy_1965),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1966,Dummy_1966,Dummy_1966,Dummy_1966),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1967,Dummy_1967,Dummy_1967,Dummy_1967),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1965,Dummy_1965,Dummy_1965,Dummy_1965),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1966,Dummy_1966,Dummy_1966,Dummy_1966),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1967,Dummy_1967,Dummy_1967,Dummy_1967),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(Dummy_1965,Dummy_1965,Dummy_1965,Dummy_1965),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(Dummy_1966,Dummy_1966,Dummy_1966,Dummy_1966),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(Dummy_1967,Dummy_1967,Dummy_1967,Dummy_1967),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_3,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -986,37 +986,37 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1930*Dummy_1930) + (Dummy_1931*Dummy_1931) + (Dummy_1932*Dummy_1932));
-                   const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1930*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_0_2_GREEN_DOWN);
-                   const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1930*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_1_2_GREEN_DOWN);
-                   const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1930*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_2_2_GREEN_DOWN);
-                   const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                   const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
-                   const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                   const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                   const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                   const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                   const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1965*Dummy_1965) + (Dummy_1966*Dummy_1966) + (Dummy_1967*Dummy_1967));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_0_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_1_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_2_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1028,10 +1028,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
index f3cad3946116d2525dc4c39a528feeb6aea32cd2..44084aead6778d6a9e1f514364a7f2911d93fd7a 100644
--- a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,33 +56,33 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t * RESTRICT  _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 * RESTRICT  _data_k, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -97,10 +97,10 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -114,53 +114,53 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -175,10 +175,10 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -192,25 +192,25 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
index f882630412390c0caa070709697543b1e6302f30..4b37c29daaf2c8b8089facdb29476ec7480ccfef 100644
--- a/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/div_k_grad/avx/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,56 +56,56 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t * RESTRICT  _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 * RESTRICT  _data_k, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -123,11 +123,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -144,30 +144,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -175,57 +175,57 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -243,11 +243,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -264,30 +264,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -295,51 +295,51 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -357,11 +357,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -378,30 +378,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -409,54 +409,54 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -474,11 +474,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -495,30 +495,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -526,51 +526,51 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -588,11 +588,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -609,30 +609,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -640,54 +640,54 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -705,11 +705,11 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -726,30 +726,30 @@ void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                   const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-                   const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                   const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                   const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                   const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_2D.cpp b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_2D.cpp
index 1d95a2b2bc96b27bbb6dcbae0e6cd8a138149831..8369375de711aedeebe9d2dedcca0beb14e0718a 100644
--- a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_2D.cpp
+++ b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_2D.cpp
@@ -56,33 +56,33 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, real_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t * RESTRICT  _data_srcEdge, real_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::apply_macro_2D( walberla::float64 * RESTRICT  _data_dstEdge, walberla::float64 * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 * RESTRICT  _data_srcEdge, walberla::float64 * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -124,58 +124,58 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_5_5 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_1);
-                   const __m256d tmp_q_3 = _mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)));
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)));
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_7)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_9))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_5),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_3,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
-                   const __m256d tmp_q_11 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
-                   const __m256d tmp_q_14 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(tmp_q_14,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_14,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
-                   const __m256d tmp_q_19 = _mm256_add_pd(tmp_q_17,tmp_q_18);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
-                   const __m256d tmp_q_22 = _mm256_add_pd(tmp_q_20,tmp_q_21);
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_q_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_24 = _mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)));
-                   const __m256d tmp_q_25 = _mm256_add_pd(_mm256_mul_pd(tmp_q_21,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)));
-                   const __m256d tmp_q_26 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_26,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)));
-                   const __m256d tmp_q_28 = _mm256_add_pd(_mm256_mul_pd(tmp_q_20,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_26,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_11,tmp_q_11);
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_14,tmp_q_14);
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_3,tmp_q_3),_mm256_mul_pd(tmp_q_4,tmp_q_4)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_3),_mm256_mul_pd(tmp_q_13,tmp_q_4)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_3),_mm256_mul_pd(tmp_q_16,tmp_q_4)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_3),_mm256_mul_pd(tmp_q_22,tmp_q_4)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_3),_mm256_mul_pd(tmp_q_25,tmp_q_4)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_27,tmp_q_3),_mm256_mul_pd(tmp_q_28,tmp_q_4)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_mul_pd(tmp_q_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_15),_mm256_mul_pd(tmp_q_13,tmp_q_16)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_19),_mm256_mul_pd(tmp_q_13,tmp_q_22)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_24),_mm256_mul_pd(tmp_q_13,tmp_q_25)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_27),_mm256_mul_pd(tmp_q_13,tmp_q_28)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_mul_pd(tmp_q_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_19),_mm256_mul_pd(tmp_q_16,tmp_q_22)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_24),_mm256_mul_pd(tmp_q_16,tmp_q_25)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_27),_mm256_mul_pd(tmp_q_16,tmp_q_28)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_19),_mm256_mul_pd(tmp_q_22,tmp_q_22)));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_24),_mm256_mul_pd(tmp_q_22,tmp_q_25)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_27),_mm256_mul_pd(tmp_q_22,tmp_q_28)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_24),_mm256_mul_pd(tmp_q_25,tmp_q_25)));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_27),_mm256_mul_pd(tmp_q_25,tmp_q_28)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_27,tmp_q_27),_mm256_mul_pd(tmp_q_28,tmp_q_28)));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_1);
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)));
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)));
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_7)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_9))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_5),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_3,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
+                   const __m256d tmp_qloop_11 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(tmp_qloop_17,tmp_qloop_18);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
+                   const __m256d tmp_qloop_22 = _mm256_add_pd(tmp_qloop_20,tmp_qloop_21);
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_24 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)));
+                   const __m256d tmp_qloop_25 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_21,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)));
+                   const __m256d tmp_qloop_26 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_26,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)));
+                   const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_26,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_11,tmp_qloop_11);
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_14,tmp_qloop_14);
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_4,tmp_qloop_4)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_4)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_4)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_4)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_4)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_27,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_28,tmp_qloop_4)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_mul_pd(tmp_qloop_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_15),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_16)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_22)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_25)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_28)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_mul_pd(tmp_qloop_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_22)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_25)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_28)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_22)));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_25)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_28)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_25)));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_28)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_27,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_28,tmp_qloop_28)));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -213,93 +213,93 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t src_dof_3 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_5_5 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 src_dof_3 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                   const real_t tmp_q_3 = jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2;
-                   const real_t tmp_q_4 = jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2;
-                   const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                   const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_7 = tmp_q_6*2.0;
-                   const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_12 = jac_affine_inv_0_0_GRAY*tmp_q_11;
-                   const real_t tmp_q_13 = jac_affine_inv_0_1_GRAY*tmp_q_11;
-                   const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_15 = jac_affine_inv_1_0_GRAY*tmp_q_14;
-                   const real_t tmp_q_16 = jac_affine_inv_1_1_GRAY*tmp_q_14;
-                   const real_t tmp_q_17 = jac_affine_inv_1_0_GRAY*tmp_q_0;
-                   const real_t tmp_q_18 = jac_affine_inv_0_0_GRAY*tmp_q_1;
-                   const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                   const real_t tmp_q_20 = jac_affine_inv_1_1_GRAY*tmp_q_0;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_GRAY*tmp_q_1;
-                   const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                   const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_GRAY*tmp_q_23 - tmp_q_18;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_GRAY*tmp_q_23 - tmp_q_21;
-                   const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                   const real_t tmp_q_27 = jac_affine_inv_0_0_GRAY*tmp_q_26 - tmp_q_17;
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_GRAY*tmp_q_26 - tmp_q_20;
-                   const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                   const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                   const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                   const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                   const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                   const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                   const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                   const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                   const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_q_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_q_29);
-                   const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                   const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                   const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                   const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                   const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_q_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_q_30);
-                   const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                   const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                   const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                   const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                   const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                   const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                   const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                   const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                   const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                   const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_GRAY*tmp_qloop_11;
+                   const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_GRAY*tmp_qloop_11;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_GRAY*tmp_qloop_14;
+                   const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_GRAY*tmp_qloop_14;
+                   const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_GRAY*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_GRAY*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_GRAY*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GRAY*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                   const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GRAY*tmp_qloop_23 - tmp_qloop_18;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GRAY*tmp_qloop_23 - tmp_qloop_21;
+                   const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_GRAY*tmp_qloop_26 - tmp_qloop_17;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GRAY*tmp_qloop_26 - tmp_qloop_20;
+                   const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                   const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_qloop_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_qloop_29);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_qloop_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -322,12 +322,12 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                    q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
                 _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
@@ -337,28 +337,28 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -400,58 +400,58 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_5_5 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_1);
-                   const __m256d tmp_q_3 = _mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)));
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)));
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_7)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_9))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_5),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_3,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
-                   const __m256d tmp_q_11 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
-                   const __m256d tmp_q_14 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(tmp_q_14,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_14,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
-                   const __m256d tmp_q_19 = _mm256_add_pd(tmp_q_17,tmp_q_18);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
-                   const __m256d tmp_q_22 = _mm256_add_pd(tmp_q_20,tmp_q_21);
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_q_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_24 = _mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)));
-                   const __m256d tmp_q_25 = _mm256_add_pd(_mm256_mul_pd(tmp_q_21,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)));
-                   const __m256d tmp_q_26 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_26,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)));
-                   const __m256d tmp_q_28 = _mm256_add_pd(_mm256_mul_pd(tmp_q_20,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_26,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_11,tmp_q_11);
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_14,tmp_q_14);
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_3,tmp_q_3),_mm256_mul_pd(tmp_q_4,tmp_q_4)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_3),_mm256_mul_pd(tmp_q_13,tmp_q_4)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_3),_mm256_mul_pd(tmp_q_16,tmp_q_4)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_3),_mm256_mul_pd(tmp_q_22,tmp_q_4)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_3),_mm256_mul_pd(tmp_q_25,tmp_q_4)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_27,tmp_q_3),_mm256_mul_pd(tmp_q_28,tmp_q_4)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_mul_pd(tmp_q_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_15),_mm256_mul_pd(tmp_q_13,tmp_q_16)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_19),_mm256_mul_pd(tmp_q_13,tmp_q_22)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_24),_mm256_mul_pd(tmp_q_13,tmp_q_25)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_12,tmp_q_27),_mm256_mul_pd(tmp_q_13,tmp_q_28)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_mul_pd(tmp_q_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_19),_mm256_mul_pd(tmp_q_16,tmp_q_22)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_24),_mm256_mul_pd(tmp_q_16,tmp_q_25)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_15,tmp_q_27),_mm256_mul_pd(tmp_q_16,tmp_q_28)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_19),_mm256_mul_pd(tmp_q_22,tmp_q_22)));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_24),_mm256_mul_pd(tmp_q_22,tmp_q_25)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_19,tmp_q_27),_mm256_mul_pd(tmp_q_22,tmp_q_28)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_24),_mm256_mul_pd(tmp_q_25,tmp_q_25)));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_27),_mm256_mul_pd(tmp_q_25,tmp_q_28)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_10,_mm256_add_pd(_mm256_mul_pd(tmp_q_27,tmp_q_27),_mm256_mul_pd(tmp_q_28,tmp_q_28)));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_1);
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)));
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)));
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_7)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_9))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_5),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_3,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
+                   const __m256d tmp_qloop_11 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(tmp_qloop_17,tmp_qloop_18);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
+                   const __m256d tmp_qloop_22 = _mm256_add_pd(tmp_qloop_20,tmp_qloop_21);
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_24 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)));
+                   const __m256d tmp_qloop_25 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_21,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)));
+                   const __m256d tmp_qloop_26 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_26,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)));
+                   const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_26,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_11,tmp_qloop_11);
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_14,tmp_qloop_14);
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_4,tmp_qloop_4)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_4)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_4)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_4)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_4)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_27,tmp_qloop_3),_mm256_mul_pd(tmp_qloop_28,tmp_qloop_4)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_mul_pd(tmp_qloop_29,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_15),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_16)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_22)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_25)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_13,tmp_qloop_28)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_mul_pd(tmp_qloop_30,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_22)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_25)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_15,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_16,tmp_qloop_28)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_19),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_22)));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_25)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_19,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_28)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_25)));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_28)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_10,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_27,tmp_qloop_27),_mm256_mul_pd(tmp_qloop_28,tmp_qloop_28)));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -489,93 +489,93 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                const real_t src_dof_3 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                const real_t k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_5_5 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                const walberla::float64 src_dof_3 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                   const real_t tmp_q_3 = jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2;
-                   const real_t tmp_q_4 = jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2;
-                   const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                   const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_7 = tmp_q_6*2.0;
-                   const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_12 = jac_affine_inv_0_0_BLUE*tmp_q_11;
-                   const real_t tmp_q_13 = jac_affine_inv_0_1_BLUE*tmp_q_11;
-                   const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_15 = jac_affine_inv_1_0_BLUE*tmp_q_14;
-                   const real_t tmp_q_16 = jac_affine_inv_1_1_BLUE*tmp_q_14;
-                   const real_t tmp_q_17 = jac_affine_inv_1_0_BLUE*tmp_q_0;
-                   const real_t tmp_q_18 = jac_affine_inv_0_0_BLUE*tmp_q_1;
-                   const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                   const real_t tmp_q_20 = jac_affine_inv_1_1_BLUE*tmp_q_0;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE*tmp_q_1;
-                   const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                   const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE*tmp_q_23 - tmp_q_18;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE*tmp_q_23 - tmp_q_21;
-                   const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                   const real_t tmp_q_27 = jac_affine_inv_0_0_BLUE*tmp_q_26 - tmp_q_17;
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE*tmp_q_26 - tmp_q_20;
-                   const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                   const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                   const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                   const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                   const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                   const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                   const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                   const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                   const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_q_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_q_29);
-                   const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                   const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                   const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                   const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                   const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_q_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_q_30);
-                   const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                   const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                   const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                   const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                   const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                   const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                   const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                   const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                   const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                   const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_BLUE*tmp_qloop_11;
+                   const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_BLUE*tmp_qloop_11;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_BLUE*tmp_qloop_14;
+                   const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_BLUE*tmp_qloop_14;
+                   const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_BLUE*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_BLUE*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_BLUE*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                   const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE*tmp_qloop_23 - tmp_qloop_18;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE*tmp_qloop_23 - tmp_qloop_21;
+                   const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_BLUE*tmp_qloop_26 - tmp_qloop_17;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE*tmp_qloop_26 - tmp_qloop_20;
+                   const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                   const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_qloop_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_qloop_29);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_qloop_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -598,12 +598,12 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                    q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
                 _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_3D.cpp b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_3D.cpp
index 231cc6173235fe24250dadd787fa0a940e3436b1..7489c74ec68e1dc02527f1ccffb77ec06947d93c 100644
--- a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_3D.cpp
+++ b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_apply_macro_3D.cpp
@@ -56,56 +56,56 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, real_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t * RESTRICT  _data_srcEdge, real_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::apply_macro_3D( walberla::float64 * RESTRICT  _data_dstEdge, walberla::float64 * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 * RESTRICT  _data_srcEdge, walberla::float64 * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -190,153 +190,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -416,230 +416,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_UP*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_UP*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_UP*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_UP*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_UP*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_UP*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_UP*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_UP*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_UP*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_UP*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_UP*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_UP*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -696,16 +696,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -719,57 +719,57 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -854,153 +854,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -1080,230 +1080,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1360,16 +1360,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -1383,51 +1383,51 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -1512,153 +1512,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -1738,230 +1738,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_UP*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_UP*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_UP*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_UP*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_UP*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_UP*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_UP*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_UP*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_UP*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_UP*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_UP*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_UP*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -2018,16 +2018,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -2041,54 +2041,54 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -2173,153 +2173,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -2399,230 +2399,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -2679,16 +2679,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -2702,51 +2702,51 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -2831,153 +2831,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -3057,230 +3057,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_UP*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_UP*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_UP*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_UP*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_UP*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_UP*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_UP*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_UP*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_UP*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_UP*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_UP*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_UP*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -3337,16 +3337,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -3360,54 +3360,54 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -3492,153 +3492,153 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)));
-                   const __m256d tmp_q_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)));
-                   const __m256d tmp_q_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(tmp_q_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_17 = _mm256_add_pd(tmp_q_8,tmp_q_9);
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_10),tmp_q_12),tmp_q_14),tmp_q_16),tmp_q_17))),_mm256_mul_pd(k_dof_4,tmp_q_10)),_mm256_mul_pd(k_dof_5,tmp_q_9)),_mm256_mul_pd(k_dof_6,tmp_q_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
-                   const __m256d tmp_q_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1);
-                   const __m256d tmp_q_20 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
-                   const __m256d tmp_q_21 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
-                   const __m256d tmp_q_22 = _mm256_mul_pd(tmp_q_19,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
-                   const __m256d tmp_q_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_2);
-                   const __m256d tmp_q_24 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
-                   const __m256d tmp_q_25 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
-                   const __m256d tmp_q_26 = _mm256_mul_pd(tmp_q_23,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
-                   const __m256d tmp_q_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0);
-                   const __m256d tmp_q_28 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
-                   const __m256d tmp_q_29 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
-                   const __m256d tmp_q_30 = _mm256_mul_pd(tmp_q_27,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
-                   const __m256d tmp_q_31 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
-                   const __m256d tmp_q_32 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
-                   const __m256d tmp_q_33 = _mm256_add_pd(tmp_q_31,tmp_q_32);
-                   const __m256d tmp_q_34 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
-                   const __m256d tmp_q_35 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
-                   const __m256d tmp_q_36 = _mm256_add_pd(tmp_q_34,tmp_q_35);
-                   const __m256d tmp_q_37 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
-                   const __m256d tmp_q_38 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
-                   const __m256d tmp_q_39 = _mm256_add_pd(tmp_q_37,tmp_q_38);
-                   const __m256d tmp_q_40 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
-                   const __m256d tmp_q_41 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
-                   const __m256d tmp_q_42 = _mm256_add_pd(tmp_q_40,tmp_q_41);
-                   const __m256d tmp_q_43 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
-                   const __m256d tmp_q_44 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
-                   const __m256d tmp_q_45 = _mm256_add_pd(tmp_q_43,tmp_q_44);
-                   const __m256d tmp_q_46 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
-                   const __m256d tmp_q_47 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
-                   const __m256d tmp_q_48 = _mm256_add_pd(tmp_q_46,tmp_q_47);
-                   const __m256d tmp_q_49 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
-                   const __m256d tmp_q_50 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
-                   const __m256d tmp_q_51 = _mm256_add_pd(tmp_q_49,tmp_q_50);
-                   const __m256d tmp_q_52 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
-                   const __m256d tmp_q_53 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
-                   const __m256d tmp_q_54 = _mm256_add_pd(tmp_q_52,tmp_q_53);
-                   const __m256d tmp_q_55 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
-                   const __m256d tmp_q_56 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
-                   const __m256d tmp_q_57 = _mm256_add_pd(tmp_q_55,tmp_q_56);
-                   const __m256d tmp_q_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)));
-                   const __m256d tmp_q_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)));
-                   const __m256d tmp_q_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_58,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)));
-                   const __m256d tmp_q_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)));
-                   const __m256d tmp_q_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)));
-                   const __m256d tmp_q_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_63,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)));
-                   const __m256d tmp_q_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d tmp_q_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)));
-                   const __m256d tmp_q_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)));
-                   const __m256d tmp_q_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_67,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)));
-                   const __m256d tmp_q_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_5),_mm256_mul_pd(tmp_q_6,tmp_q_6)),_mm256_mul_pd(tmp_q_7,tmp_q_7)));
-                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_5),_mm256_mul_pd(tmp_q_21,tmp_q_6)),_mm256_mul_pd(tmp_q_22,tmp_q_7)));
-                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_5),_mm256_mul_pd(tmp_q_25,tmp_q_6)),_mm256_mul_pd(tmp_q_26,tmp_q_7)));
-                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_5),_mm256_mul_pd(tmp_q_29,tmp_q_6)),_mm256_mul_pd(tmp_q_30,tmp_q_7)));
-                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_5),_mm256_mul_pd(tmp_q_36,tmp_q_6)),_mm256_mul_pd(tmp_q_39,tmp_q_7)));
-                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_5),_mm256_mul_pd(tmp_q_45,tmp_q_6)),_mm256_mul_pd(tmp_q_48,tmp_q_7)));
-                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_51),_mm256_mul_pd(tmp_q_54,tmp_q_6)),_mm256_mul_pd(tmp_q_57,tmp_q_7)));
-                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_59),_mm256_mul_pd(tmp_q_6,tmp_q_60)),_mm256_mul_pd(tmp_q_61,tmp_q_7)));
-                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_64),_mm256_mul_pd(tmp_q_6,tmp_q_65)),_mm256_mul_pd(tmp_q_66,tmp_q_7)));
-                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,tmp_q_68),_mm256_mul_pd(tmp_q_6,tmp_q_69)),_mm256_mul_pd(tmp_q_7,tmp_q_70)));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_24),_mm256_mul_pd(tmp_q_21,tmp_q_25)),_mm256_mul_pd(tmp_q_22,tmp_q_26)));
-                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_28),_mm256_mul_pd(tmp_q_21,tmp_q_29)),_mm256_mul_pd(tmp_q_22,tmp_q_30)));
-                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_33),_mm256_mul_pd(tmp_q_21,tmp_q_36)),_mm256_mul_pd(tmp_q_22,tmp_q_39)));
-                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_42),_mm256_mul_pd(tmp_q_21,tmp_q_45)),_mm256_mul_pd(tmp_q_22,tmp_q_48)));
-                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_51),_mm256_mul_pd(tmp_q_21,tmp_q_54)),_mm256_mul_pd(tmp_q_22,tmp_q_57)));
-                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_59),_mm256_mul_pd(tmp_q_21,tmp_q_60)),_mm256_mul_pd(tmp_q_22,tmp_q_61)));
-                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_64),_mm256_mul_pd(tmp_q_21,tmp_q_65)),_mm256_mul_pd(tmp_q_22,tmp_q_66)));
-                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_20,tmp_q_68),_mm256_mul_pd(tmp_q_21,tmp_q_69)),_mm256_mul_pd(tmp_q_22,tmp_q_70)));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_28),_mm256_mul_pd(tmp_q_25,tmp_q_29)),_mm256_mul_pd(tmp_q_26,tmp_q_30)));
-                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_33),_mm256_mul_pd(tmp_q_25,tmp_q_36)),_mm256_mul_pd(tmp_q_26,tmp_q_39)));
-                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_42),_mm256_mul_pd(tmp_q_25,tmp_q_45)),_mm256_mul_pd(tmp_q_26,tmp_q_48)));
-                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_51),_mm256_mul_pd(tmp_q_25,tmp_q_54)),_mm256_mul_pd(tmp_q_26,tmp_q_57)));
-                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_59),_mm256_mul_pd(tmp_q_25,tmp_q_60)),_mm256_mul_pd(tmp_q_26,tmp_q_61)));
-                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_64),_mm256_mul_pd(tmp_q_25,tmp_q_65)),_mm256_mul_pd(tmp_q_26,tmp_q_66)));
-                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_24,tmp_q_68),_mm256_mul_pd(tmp_q_25,tmp_q_69)),_mm256_mul_pd(tmp_q_26,tmp_q_70)));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_33),_mm256_mul_pd(tmp_q_29,tmp_q_36)),_mm256_mul_pd(tmp_q_30,tmp_q_39)));
-                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_42),_mm256_mul_pd(tmp_q_29,tmp_q_45)),_mm256_mul_pd(tmp_q_30,tmp_q_48)));
-                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_51),_mm256_mul_pd(tmp_q_29,tmp_q_54)),_mm256_mul_pd(tmp_q_30,tmp_q_57)));
-                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_59),_mm256_mul_pd(tmp_q_29,tmp_q_60)),_mm256_mul_pd(tmp_q_30,tmp_q_61)));
-                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_64),_mm256_mul_pd(tmp_q_29,tmp_q_65)),_mm256_mul_pd(tmp_q_30,tmp_q_66)));
-                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_28,tmp_q_68),_mm256_mul_pd(tmp_q_29,tmp_q_69)),_mm256_mul_pd(tmp_q_30,tmp_q_70)));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_add_pd(_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_add_pd(_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_add_pd(_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_42),_mm256_mul_pd(tmp_q_36,tmp_q_45)),_mm256_mul_pd(tmp_q_39,tmp_q_48)));
-                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_51),_mm256_mul_pd(tmp_q_36,tmp_q_54)),_mm256_mul_pd(tmp_q_39,tmp_q_57)));
-                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_59),_mm256_mul_pd(tmp_q_36,tmp_q_60)),_mm256_mul_pd(tmp_q_39,tmp_q_61)));
-                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_64),_mm256_mul_pd(tmp_q_36,tmp_q_65)),_mm256_mul_pd(tmp_q_39,tmp_q_66)));
-                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_33,tmp_q_68),_mm256_mul_pd(tmp_q_36,tmp_q_69)),_mm256_mul_pd(tmp_q_39,tmp_q_70)));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81)),_mm256_add_pd(_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83)),_mm256_add_pd(_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85)),_mm256_add_pd(_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_51),_mm256_mul_pd(tmp_q_45,tmp_q_54)),_mm256_mul_pd(tmp_q_48,tmp_q_57)));
-                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_59),_mm256_mul_pd(tmp_q_45,tmp_q_60)),_mm256_mul_pd(tmp_q_48,tmp_q_61)));
-                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_64),_mm256_mul_pd(tmp_q_45,tmp_q_65)),_mm256_mul_pd(tmp_q_48,tmp_q_66)));
-                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_42,tmp_q_68),_mm256_mul_pd(tmp_q_45,tmp_q_69)),_mm256_mul_pd(tmp_q_48,tmp_q_70)));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87)),_mm256_add_pd(_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89)),_mm256_add_pd(_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91)),_mm256_add_pd(_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_59),_mm256_mul_pd(tmp_q_54,tmp_q_60)),_mm256_mul_pd(tmp_q_57,tmp_q_61)));
-                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_64),_mm256_mul_pd(tmp_q_54,tmp_q_65)),_mm256_mul_pd(tmp_q_57,tmp_q_66)));
-                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_51,tmp_q_68),_mm256_mul_pd(tmp_q_54,tmp_q_69)),_mm256_mul_pd(tmp_q_57,tmp_q_70)));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_75,tmp_q_75,tmp_q_75,tmp_q_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_81,tmp_q_81,tmp_q_81,tmp_q_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_77,tmp_q_77,tmp_q_77,tmp_q_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_83,tmp_q_83,tmp_q_83,tmp_q_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_79,tmp_q_79,tmp_q_79,tmp_q_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_85,tmp_q_85,tmp_q_85,tmp_q_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_64),_mm256_mul_pd(tmp_q_60,tmp_q_65)),_mm256_mul_pd(tmp_q_61,tmp_q_66)));
-                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_59,tmp_q_68),_mm256_mul_pd(tmp_q_60,tmp_q_69)),_mm256_mul_pd(tmp_q_61,tmp_q_70)));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_74,tmp_q_74,tmp_q_74,tmp_q_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_87,tmp_q_87,tmp_q_87,tmp_q_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_76,tmp_q_76,tmp_q_76,tmp_q_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_89,tmp_q_89,tmp_q_89,tmp_q_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_78,tmp_q_78,tmp_q_78,tmp_q_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_91,tmp_q_91,tmp_q_91,tmp_q_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_64,tmp_q_68),_mm256_mul_pd(tmp_q_65,tmp_q_69)),_mm256_mul_pd(tmp_q_66,tmp_q_70)));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_80,tmp_q_80,tmp_q_80,tmp_q_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_86,tmp_q_86,tmp_q_86,tmp_q_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_82,tmp_q_82,tmp_q_82,tmp_q_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_88,tmp_q_88,tmp_q_88,tmp_q_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_84,tmp_q_84,tmp_q_84,tmp_q_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_90,tmp_q_90,tmp_q_90,tmp_q_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)));
+                   const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)));
+                   const __m256d tmp_qloop_7 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_17 = _mm256_add_pd(tmp_qloop_8,tmp_qloop_9);
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_12)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_14))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_16))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_9,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_10),tmp_qloop_12),tmp_qloop_14),tmp_qloop_16),tmp_qloop_17))),_mm256_mul_pd(k_dof_4,tmp_qloop_10)),_mm256_mul_pd(k_dof_5,tmp_qloop_9)),_mm256_mul_pd(k_dof_6,tmp_qloop_8)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
+                   const __m256d tmp_qloop_19 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1);
+                   const __m256d tmp_qloop_20 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_21 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_22 = _mm256_mul_pd(tmp_qloop_19,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_23 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_2);
+                   const __m256d tmp_qloop_24 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_25 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_26 = _mm256_mul_pd(tmp_qloop_23,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_27 = _mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_28 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_29 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_30 = _mm256_mul_pd(tmp_qloop_27,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_31 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_33 = _mm256_add_pd(tmp_qloop_31,tmp_qloop_32);
+                   const __m256d tmp_qloop_34 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_35 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_36 = _mm256_add_pd(tmp_qloop_34,tmp_qloop_35);
+                   const __m256d tmp_qloop_37 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_38 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(tmp_qloop_37,tmp_qloop_38);
+                   const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_42 = _mm256_add_pd(tmp_qloop_40,tmp_qloop_41);
+                   const __m256d tmp_qloop_43 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_44 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_45 = _mm256_add_pd(tmp_qloop_43,tmp_qloop_44);
+                   const __m256d tmp_qloop_46 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_47 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_48 = _mm256_add_pd(tmp_qloop_46,tmp_qloop_47);
+                   const __m256d tmp_qloop_49 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_50 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN));
+                   const __m256d tmp_qloop_51 = _mm256_add_pd(tmp_qloop_49,tmp_qloop_50);
+                   const __m256d tmp_qloop_52 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_53 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN));
+                   const __m256d tmp_qloop_54 = _mm256_add_pd(tmp_qloop_52,tmp_qloop_53);
+                   const __m256d tmp_qloop_55 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_56 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN));
+                   const __m256d tmp_qloop_57 = _mm256_add_pd(tmp_qloop_55,tmp_qloop_56);
+                   const __m256d tmp_qloop_58 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_59 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_32,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_41,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)));
+                   const __m256d tmp_qloop_60 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_35,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_44,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)));
+                   const __m256d tmp_qloop_61 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_47,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)));
+                   const __m256d tmp_qloop_62 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_63 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_64 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_50,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)));
+                   const __m256d tmp_qloop_65 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_34,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_53,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)));
+                   const __m256d tmp_qloop_66 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_56,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)));
+                   const __m256d tmp_qloop_67 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_62,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d tmp_qloop_68 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_49,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)));
+                   const __m256d tmp_qloop_69 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_43,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_52,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)));
+                   const __m256d tmp_qloop_70 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_46,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_55,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)));
+                   const __m256d tmp_qloop_71 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_72 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_73 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_7)));
+                   const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_7)));
+                   const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_7)));
+                   const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_7)));
+                   const __m256d q_tmp_0_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_7)));
+                   const __m256d q_tmp_0_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_5),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_7)));
+                   const __m256d q_tmp_0_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_6)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_7)));
+                   const __m256d q_tmp_0_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_7)));
+                   const __m256d q_tmp_0_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_7)));
+                   const __m256d q_tmp_0_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_6,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_7,tmp_qloop_70)));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_71,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_24),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_25)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_26)));
+                   const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_30)));
+                   const __m256d q_tmp_1_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_39)));
+                   const __m256d q_tmp_1_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_48)));
+                   const __m256d q_tmp_1_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_57)));
+                   const __m256d q_tmp_1_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_61)));
+                   const __m256d q_tmp_1_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_66)));
+                   const __m256d q_tmp_1_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_20,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_21,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_22,tmp_qloop_70)));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_72,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_28),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_29)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_30)));
+                   const __m256d q_tmp_2_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_39)));
+                   const __m256d q_tmp_2_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_48)));
+                   const __m256d q_tmp_2_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_57)));
+                   const __m256d q_tmp_2_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_61)));
+                   const __m256d q_tmp_2_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_66)));
+                   const __m256d q_tmp_2_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_24,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_25,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_26,tmp_qloop_70)));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_73,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_3_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_33),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_36)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_39)));
+                   const __m256d q_tmp_3_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_48)));
+                   const __m256d q_tmp_3_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_57)));
+                   const __m256d q_tmp_3_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_61)));
+                   const __m256d q_tmp_3_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_66)));
+                   const __m256d q_tmp_3_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_28,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_29,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_30,tmp_qloop_70)));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_4_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_42),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_45)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_48)));
+                   const __m256d q_tmp_4_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_57)));
+                   const __m256d q_tmp_4_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_61)));
+                   const __m256d q_tmp_4_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_66)));
+                   const __m256d q_tmp_4_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_33,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_36,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_39,tmp_qloop_70)));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_51),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_54)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_57)));
+                   const __m256d q_tmp_5_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_61)));
+                   const __m256d q_tmp_5_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_66)));
+                   const __m256d q_tmp_5_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_42,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_45,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_48,tmp_qloop_70)));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_59),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_60)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_61)));
+                   const __m256d q_tmp_6_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_66)));
+                   const __m256d q_tmp_6_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_51,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_54,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_57,tmp_qloop_70)));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_75,tmp_qloop_75,tmp_qloop_75,tmp_qloop_75)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_81,tmp_qloop_81,tmp_qloop_81,tmp_qloop_81))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_77,tmp_qloop_77,tmp_qloop_77,tmp_qloop_77)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_83,tmp_qloop_83,tmp_qloop_83,tmp_qloop_83))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_79,tmp_qloop_79,tmp_qloop_79,tmp_qloop_79)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_85,tmp_qloop_85,tmp_qloop_85,tmp_qloop_85))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_58,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_64),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_65)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_66)));
+                   const __m256d q_tmp_7_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_59,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_60,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_61,tmp_qloop_70)));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_74,tmp_qloop_74,tmp_qloop_74,tmp_qloop_74)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_87,tmp_qloop_87,tmp_qloop_87,tmp_qloop_87))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_76,tmp_qloop_76,tmp_qloop_76,tmp_qloop_76)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_89,tmp_qloop_89,tmp_qloop_89,tmp_qloop_89))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_78,tmp_qloop_78,tmp_qloop_78,tmp_qloop_78)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_91,tmp_qloop_91,tmp_qloop_91,tmp_qloop_91))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_63,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_64,tmp_qloop_68),_mm256_mul_pd(tmp_qloop_65,tmp_qloop_69)),_mm256_mul_pd(tmp_qloop_66,tmp_qloop_70)));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_18,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_80,tmp_qloop_80,tmp_qloop_80,tmp_qloop_80)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_86,tmp_qloop_86,tmp_qloop_86,tmp_qloop_86))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_82,tmp_qloop_82,tmp_qloop_82,tmp_qloop_82)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_88,tmp_qloop_88,tmp_qloop_88,tmp_qloop_88))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_84,tmp_qloop_84,tmp_qloop_84,tmp_qloop_84)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_90,tmp_qloop_90,tmp_qloop_90,tmp_qloop_90))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_67,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1);
                    q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2);
@@ -3718,230 +3718,230 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_5 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t src_dof_9 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_0_4 = 0.0;
-                real_t q_acc_0_5 = 0.0;
-                real_t q_acc_0_6 = 0.0;
-                real_t q_acc_0_7 = 0.0;
-                real_t q_acc_0_8 = 0.0;
-                real_t q_acc_0_9 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_1_4 = 0.0;
-                real_t q_acc_1_5 = 0.0;
-                real_t q_acc_1_6 = 0.0;
-                real_t q_acc_1_7 = 0.0;
-                real_t q_acc_1_8 = 0.0;
-                real_t q_acc_1_9 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_2_4 = 0.0;
-                real_t q_acc_2_5 = 0.0;
-                real_t q_acc_2_6 = 0.0;
-                real_t q_acc_2_7 = 0.0;
-                real_t q_acc_2_8 = 0.0;
-                real_t q_acc_2_9 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_3_4 = 0.0;
-                real_t q_acc_3_5 = 0.0;
-                real_t q_acc_3_6 = 0.0;
-                real_t q_acc_3_7 = 0.0;
-                real_t q_acc_3_8 = 0.0;
-                real_t q_acc_3_9 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_4_5 = 0.0;
-                real_t q_acc_4_6 = 0.0;
-                real_t q_acc_4_7 = 0.0;
-                real_t q_acc_4_8 = 0.0;
-                real_t q_acc_4_9 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_5_6 = 0.0;
-                real_t q_acc_5_7 = 0.0;
-                real_t q_acc_5_8 = 0.0;
-                real_t q_acc_5_9 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_6_7 = 0.0;
-                real_t q_acc_6_8 = 0.0;
-                real_t q_acc_6_9 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_7_8 = 0.0;
-                real_t q_acc_7_9 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_8_9 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_0_4 = 0.0;
+                walberla::float64 q_acc_0_5 = 0.0;
+                walberla::float64 q_acc_0_6 = 0.0;
+                walberla::float64 q_acc_0_7 = 0.0;
+                walberla::float64 q_acc_0_8 = 0.0;
+                walberla::float64 q_acc_0_9 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_1_4 = 0.0;
+                walberla::float64 q_acc_1_5 = 0.0;
+                walberla::float64 q_acc_1_6 = 0.0;
+                walberla::float64 q_acc_1_7 = 0.0;
+                walberla::float64 q_acc_1_8 = 0.0;
+                walberla::float64 q_acc_1_9 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_2_4 = 0.0;
+                walberla::float64 q_acc_2_5 = 0.0;
+                walberla::float64 q_acc_2_6 = 0.0;
+                walberla::float64 q_acc_2_7 = 0.0;
+                walberla::float64 q_acc_2_8 = 0.0;
+                walberla::float64 q_acc_2_9 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_3_4 = 0.0;
+                walberla::float64 q_acc_3_5 = 0.0;
+                walberla::float64 q_acc_3_6 = 0.0;
+                walberla::float64 q_acc_3_7 = 0.0;
+                walberla::float64 q_acc_3_8 = 0.0;
+                walberla::float64 q_acc_3_9 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_4_5 = 0.0;
+                walberla::float64 q_acc_4_6 = 0.0;
+                walberla::float64 q_acc_4_7 = 0.0;
+                walberla::float64 q_acc_4_8 = 0.0;
+                walberla::float64 q_acc_4_9 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_5_6 = 0.0;
+                walberla::float64 q_acc_5_7 = 0.0;
+                walberla::float64 q_acc_5_8 = 0.0;
+                walberla::float64 q_acc_5_9 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_6_7 = 0.0;
+                walberla::float64 q_acc_6_8 = 0.0;
+                walberla::float64 q_acc_6_9 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_7_8 = 0.0;
+                walberla::float64 q_acc_7_9 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_8_9 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4;
-                   const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4;
-                   const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4;
-                   const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_12 = tmp_q_11*2.0;
-                   const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_14 = tmp_q_13*2.0;
-                   const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_16 = tmp_q_15*2.0;
-                   const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                   const real_t tmp_q_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                   const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                   const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_19;
-                   const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_19;
-                   const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_19;
-                   const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                   const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_23;
-                   const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_23;
-                   const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_23;
-                   const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                   const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_27;
-                   const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_27;
-                   const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_27;
-                   const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                   const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                   const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                   const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                   const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                   const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_0;
-                   const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                   const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                   const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                   const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_1;
-                   const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_2;
-                   const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                   const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                   const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                   const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                   const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                   const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                   const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                   const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                   const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                   const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                   const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                   const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                   const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                   const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                   const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                   const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                   const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                   const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                   const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                   const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                   const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                   const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_q_71);
-                   const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                   const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                   const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                   const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                   const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                   const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                   const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                   const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                   const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_q_72);
-                   const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                   const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                   const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                   const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                   const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                   const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                   const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                   const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_q_73);
-                   const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                   const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                   const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                   const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                   const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                   const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                   const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                   const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                   const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                   const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                   const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                   const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                   const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                   const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                   const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                   const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                   const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                   const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                   const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                   const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                   const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                   const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                   const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                   const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                   const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                   const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                   const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4;
+                   const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                   const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                   const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                   const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                   const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_19;
+                   const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_23;
+                   const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_27;
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                   const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                   const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                   const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                   const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                   const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                   const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                   const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                   const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                   const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                   const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                   const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                   const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                   const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_qloop_71);
+                   const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                   const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                   const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                   const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                   const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                   const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                   const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                   const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_qloop_72);
+                   const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                   const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                   const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                   const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                   const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                   const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                   const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_qloop_73);
+                   const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                   const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                   const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                   const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                   const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                   const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                   const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                   const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                   const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                   const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                   const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                   const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                   const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                   const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                   const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                   const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                   const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                   const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                   const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -3998,16 +3998,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                    q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-                const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-                const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-                const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-                const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-                const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-                const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+                const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+                const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+                const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+                const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+                const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+                const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
index 777973979c26c1bd290b01f72c5862d7aadf170f..a9f6d6f93d2517a22dbb37237cb36c8c13ec70ad 100644
--- a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,33 +56,33 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_Edge, real_t * RESTRICT  _data_invDiag_Vertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_Edge, walberla::float64 * RESTRICT  _data_invDiag_Vertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -103,29 +103,29 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 __m256d q_acc_5_5 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_1);
-                   const __m256d tmp_q_3 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_4 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_4,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_5)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_7))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_3),tmp_q_5),tmp_q_7))),_mm256_mul_pd(k_dof_3,tmp_q_3)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
-                   const __m256d tmp_q_15 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_q_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_16 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(tmp_q_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_mul_pd(tmp_q_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_mul_pd(tmp_q_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(tmp_q_11,tmp_q_12),_mm256_add_pd(tmp_q_11,tmp_q_12)),_mm256_mul_pd(_mm256_add_pd(tmp_q_13,tmp_q_14),_mm256_add_pd(tmp_q_13,tmp_q_14))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_1);
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_4 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_5)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_7))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_3),tmp_qloop_5),tmp_qloop_7))),_mm256_mul_pd(k_dof_3,tmp_qloop_3)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY,abs_det_jac_affine_GRAY));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY));
+                   const __m256d tmp_qloop_15 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_16 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY),_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_mul_pd(tmp_qloop_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY),_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY),_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_mul_pd(tmp_qloop_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY),_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(tmp_qloop_11,tmp_qloop_12),_mm256_add_pd(tmp_qloop_11,tmp_qloop_12)),_mm256_mul_pd(_mm256_add_pd(tmp_qloop_13,tmp_qloop_14),_mm256_add_pd(tmp_qloop_13,tmp_qloop_14))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY,jac_affine_inv_1_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY,jac_affine_inv_1_1_GRAY))))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY,jac_affine_inv_0_0_GRAY)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY,jac_affine_inv_0_1_GRAY))))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -148,43 +148,43 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                   const real_t tmp_q_3 = tmp_q_0*_data_q_p_1[q];
-                   const real_t tmp_q_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_5 = tmp_q_4*2.0;
-                   const real_t tmp_q_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_7 = tmp_q_6*2.0;
-                   const real_t tmp_q_8 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_q_3 + tmp_q_5 + tmp_q_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_5 - _data_q_p_0[q]) + k_dof_2*(tmp_q_7 - _data_q_p_1[q]) + k_dof_3*tmp_q_3 + k_dof_4*(tmp_q_1 - tmp_q_3 + tmp_q_6*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_3 + tmp_q_4*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_9 = ((tmp_q_0 - 1.0)*(tmp_q_0 - 1.0));
-                   const real_t tmp_q_10 = ((tmp_q_1 - 1.0)*(tmp_q_1 - 1.0));
-                   const real_t tmp_q_11 = jac_affine_inv_1_0_GRAY*tmp_q_0;
-                   const real_t tmp_q_12 = jac_affine_inv_0_0_GRAY*tmp_q_1;
-                   const real_t tmp_q_13 = jac_affine_inv_1_1_GRAY*tmp_q_0;
-                   const real_t tmp_q_14 = jac_affine_inv_0_1_GRAY*tmp_q_1;
-                   const real_t tmp_q_15 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                   const real_t tmp_q_16 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                   const real_t q_tmp_0_0 = tmp_q_8*(((jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2)*(jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2)) + ((jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2)*(jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2)));
-                   const real_t q_tmp_1_1 = tmp_q_8*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_q_9 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_q_9);
-                   const real_t q_tmp_2_2 = tmp_q_8*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_q_10 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_q_10);
-                   const real_t q_tmp_3_3 = tmp_q_8*(((tmp_q_11 + tmp_q_12)*(tmp_q_11 + tmp_q_12)) + ((tmp_q_13 + tmp_q_14)*(tmp_q_13 + tmp_q_14)));
-                   const real_t q_tmp_4_4 = tmp_q_8*(((jac_affine_inv_1_0_GRAY*tmp_q_15 - tmp_q_12)*(jac_affine_inv_1_0_GRAY*tmp_q_15 - tmp_q_12)) + ((jac_affine_inv_1_1_GRAY*tmp_q_15 - tmp_q_14)*(jac_affine_inv_1_1_GRAY*tmp_q_15 - tmp_q_14)));
-                   const real_t q_tmp_5_5 = tmp_q_8*(((jac_affine_inv_0_0_GRAY*tmp_q_16 - tmp_q_11)*(jac_affine_inv_0_0_GRAY*tmp_q_16 - tmp_q_11)) + ((jac_affine_inv_0_1_GRAY*tmp_q_16 - tmp_q_13)*(jac_affine_inv_0_1_GRAY*tmp_q_16 - tmp_q_13)));
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_4*2.0;
+                   const walberla::float64 tmp_qloop_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                   const walberla::float64 tmp_qloop_8 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_qloop_3 + tmp_qloop_5 + tmp_qloop_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_5 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_7 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_3 + k_dof_4*(tmp_qloop_1 - tmp_qloop_3 + tmp_qloop_6*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_3 + tmp_qloop_4*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_9 = ((tmp_qloop_0 - 1.0)*(tmp_qloop_0 - 1.0));
+                   const walberla::float64 tmp_qloop_10 = ((tmp_qloop_1 - 1.0)*(tmp_qloop_1 - 1.0));
+                   const walberla::float64 tmp_qloop_11 = jac_affine_inv_1_0_GRAY*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_GRAY*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_13 = jac_affine_inv_1_1_GRAY*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_14 = jac_affine_inv_0_1_GRAY*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_15 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                   const walberla::float64 tmp_qloop_16 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_8*(((jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2)*(jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2)) + ((jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2)*(jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_8*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_qloop_9 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_qloop_9);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_8*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_qloop_10 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_qloop_10);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_8*(((tmp_qloop_11 + tmp_qloop_12)*(tmp_qloop_11 + tmp_qloop_12)) + ((tmp_qloop_13 + tmp_qloop_14)*(tmp_qloop_13 + tmp_qloop_14)));
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_8*(((jac_affine_inv_1_0_GRAY*tmp_qloop_15 - tmp_qloop_12)*(jac_affine_inv_1_0_GRAY*tmp_qloop_15 - tmp_qloop_12)) + ((jac_affine_inv_1_1_GRAY*tmp_qloop_15 - tmp_qloop_14)*(jac_affine_inv_1_1_GRAY*tmp_qloop_15 - tmp_qloop_14)));
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_8*(((jac_affine_inv_0_0_GRAY*tmp_qloop_16 - tmp_qloop_11)*(jac_affine_inv_0_0_GRAY*tmp_qloop_16 - tmp_qloop_11)) + ((jac_affine_inv_0_1_GRAY*tmp_qloop_16 - tmp_qloop_13)*(jac_affine_inv_0_1_GRAY*tmp_qloop_16 - tmp_qloop_13)));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -192,12 +192,12 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                    q_acc_4_4 = q_acc_4_4 + q_tmp_4_4;
                    q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
@@ -207,28 +207,28 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
@@ -249,29 +249,29 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 __m256d q_acc_5_5 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_1);
-                   const __m256d tmp_q_3 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_4 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_4,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_5)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_7))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_q_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_3),tmp_q_5),tmp_q_7))),_mm256_mul_pd(k_dof_3,tmp_q_3)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_q_1));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
-                   const __m256d tmp_q_14 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
-                   const __m256d tmp_q_15 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_q_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_16 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_q_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(tmp_q_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_mul_pd(tmp_q_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(tmp_q_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_mul_pd(tmp_q_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(tmp_q_11,tmp_q_12),_mm256_add_pd(tmp_q_11,tmp_q_12)),_mm256_mul_pd(_mm256_add_pd(tmp_q_13,tmp_q_14),_mm256_add_pd(tmp_q_13,tmp_q_14))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_15,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_q_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_16,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_1);
+                   const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_4 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_5)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_7))),_mm256_mul_pd(k_dof_5,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_4,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0)),_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_3),tmp_qloop_5),tmp_qloop_7))),_mm256_mul_pd(k_dof_3,tmp_qloop_3)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE,abs_det_jac_affine_BLUE));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1),_mm256_add_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),tmp_qloop_1));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE));
+                   const __m256d tmp_qloop_14 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE));
+                   const __m256d tmp_qloop_15 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_16 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE),_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_mul_pd(tmp_qloop_9,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE),_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE),_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_mul_pd(tmp_qloop_10,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE),_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(tmp_qloop_11,tmp_qloop_12),_mm256_add_pd(tmp_qloop_11,tmp_qloop_12)),_mm256_mul_pd(_mm256_add_pd(tmp_qloop_13,tmp_qloop_14),_mm256_add_pd(tmp_qloop_13,tmp_qloop_14))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE,jac_affine_inv_1_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_15,_mm256_set_pd(jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE,jac_affine_inv_1_1_BLUE))))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_8,_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_11,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE,jac_affine_inv_0_0_BLUE)))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))),_mm256_add_pd(_mm256_mul_pd(tmp_qloop_13,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_16,_mm256_set_pd(jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE,jac_affine_inv_0_1_BLUE))))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -294,43 +294,43 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                const real_t k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                   const real_t tmp_q_3 = tmp_q_0*_data_q_p_1[q];
-                   const real_t tmp_q_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_5 = tmp_q_4*2.0;
-                   const real_t tmp_q_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_7 = tmp_q_6*2.0;
-                   const real_t tmp_q_8 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_q_3 + tmp_q_5 + tmp_q_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_5 - _data_q_p_0[q]) + k_dof_2*(tmp_q_7 - _data_q_p_1[q]) + k_dof_3*tmp_q_3 + k_dof_4*(tmp_q_1 - tmp_q_3 + tmp_q_6*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_3 + tmp_q_4*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_9 = ((tmp_q_0 - 1.0)*(tmp_q_0 - 1.0));
-                   const real_t tmp_q_10 = ((tmp_q_1 - 1.0)*(tmp_q_1 - 1.0));
-                   const real_t tmp_q_11 = jac_affine_inv_1_0_BLUE*tmp_q_0;
-                   const real_t tmp_q_12 = jac_affine_inv_0_0_BLUE*tmp_q_1;
-                   const real_t tmp_q_13 = jac_affine_inv_1_1_BLUE*tmp_q_0;
-                   const real_t tmp_q_14 = jac_affine_inv_0_1_BLUE*tmp_q_1;
-                   const real_t tmp_q_15 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                   const real_t tmp_q_16 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                   const real_t q_tmp_0_0 = tmp_q_8*(((jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2)*(jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2)) + ((jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2)*(jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2)));
-                   const real_t q_tmp_1_1 = tmp_q_8*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_q_9 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_q_9);
-                   const real_t q_tmp_2_2 = tmp_q_8*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_q_10 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_q_10);
-                   const real_t q_tmp_3_3 = tmp_q_8*(((tmp_q_11 + tmp_q_12)*(tmp_q_11 + tmp_q_12)) + ((tmp_q_13 + tmp_q_14)*(tmp_q_13 + tmp_q_14)));
-                   const real_t q_tmp_4_4 = tmp_q_8*(((jac_affine_inv_1_0_BLUE*tmp_q_15 - tmp_q_12)*(jac_affine_inv_1_0_BLUE*tmp_q_15 - tmp_q_12)) + ((jac_affine_inv_1_1_BLUE*tmp_q_15 - tmp_q_14)*(jac_affine_inv_1_1_BLUE*tmp_q_15 - tmp_q_14)));
-                   const real_t q_tmp_5_5 = tmp_q_8*(((jac_affine_inv_0_0_BLUE*tmp_q_16 - tmp_q_11)*(jac_affine_inv_0_0_BLUE*tmp_q_16 - tmp_q_11)) + ((jac_affine_inv_0_1_BLUE*tmp_q_16 - tmp_q_13)*(jac_affine_inv_0_1_BLUE*tmp_q_16 - tmp_q_13)));
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_4*2.0;
+                   const walberla::float64 tmp_qloop_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                   const walberla::float64 tmp_qloop_8 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_qloop_3 + tmp_qloop_5 + tmp_qloop_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_5 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_7 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_3 + k_dof_4*(tmp_qloop_1 - tmp_qloop_3 + tmp_qloop_6*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_3 + tmp_qloop_4*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_9 = ((tmp_qloop_0 - 1.0)*(tmp_qloop_0 - 1.0));
+                   const walberla::float64 tmp_qloop_10 = ((tmp_qloop_1 - 1.0)*(tmp_qloop_1 - 1.0));
+                   const walberla::float64 tmp_qloop_11 = jac_affine_inv_1_0_BLUE*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_BLUE*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_13 = jac_affine_inv_1_1_BLUE*tmp_qloop_0;
+                   const walberla::float64 tmp_qloop_14 = jac_affine_inv_0_1_BLUE*tmp_qloop_1;
+                   const walberla::float64 tmp_qloop_15 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                   const walberla::float64 tmp_qloop_16 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_8*(((jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2)*(jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2)) + ((jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2)*(jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_8*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_qloop_9 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_qloop_9);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_8*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_qloop_10 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_qloop_10);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_8*(((tmp_qloop_11 + tmp_qloop_12)*(tmp_qloop_11 + tmp_qloop_12)) + ((tmp_qloop_13 + tmp_qloop_14)*(tmp_qloop_13 + tmp_qloop_14)));
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_8*(((jac_affine_inv_1_0_BLUE*tmp_qloop_15 - tmp_qloop_12)*(jac_affine_inv_1_0_BLUE*tmp_qloop_15 - tmp_qloop_12)) + ((jac_affine_inv_1_1_BLUE*tmp_qloop_15 - tmp_qloop_14)*(jac_affine_inv_1_1_BLUE*tmp_qloop_15 - tmp_qloop_14)));
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_8*(((jac_affine_inv_0_0_BLUE*tmp_qloop_16 - tmp_qloop_11)*(jac_affine_inv_0_0_BLUE*tmp_qloop_16 - tmp_qloop_11)) + ((jac_affine_inv_0_1_BLUE*tmp_qloop_16 - tmp_qloop_13)*(jac_affine_inv_0_1_BLUE*tmp_qloop_16 - tmp_qloop_13)));
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -338,12 +338,12 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                    q_acc_4_4 = q_acc_4_4 + q_tmp_4_4;
                    q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
index cbbabac57ed9561223ffd47a5596c4085a9b554a..0b357856dad179fa6bd0f6daddbde7c723374b99 100644
--- a/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/div_k_grad/avx/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,56 +56,56 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_Edge, real_t * RESTRICT  _data_invDiag_Vertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_Edge, walberla::float64 * RESTRICT  _data_invDiag_Vertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -135,57 +135,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP,abs_det_jac_affine_WHITE_UP));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP,jac_affine_inv_2_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP,jac_affine_inv_2_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP,jac_affine_inv_2_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP,jac_affine_inv_1_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP,jac_affine_inv_1_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP,jac_affine_inv_1_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP,jac_affine_inv_0_0_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP,jac_affine_inv_0_1_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP,jac_affine_inv_0_2_WHITE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -220,79 +220,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4)) + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4)) + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_q_16 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_q_16 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_q_17 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_q_17 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_q_18 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_q_18 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_WHITE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_WHITE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_WHITE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_WHITE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_WHITE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_WHITE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_WHITE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_WHITE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -304,16 +304,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -327,57 +327,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -407,57 +407,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN,abs_det_jac_affine_WHITE_DOWN));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN,jac_affine_inv_2_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN,jac_affine_inv_2_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN,jac_affine_inv_2_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN,jac_affine_inv_1_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN,jac_affine_inv_1_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN,jac_affine_inv_1_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN,jac_affine_inv_0_0_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN,jac_affine_inv_0_1_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN,jac_affine_inv_0_2_WHITE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -492,79 +492,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -576,16 +576,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -599,51 +599,51 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -673,57 +673,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP,abs_det_jac_affine_BLUE_UP));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP,jac_affine_inv_2_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP,jac_affine_inv_2_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP,jac_affine_inv_2_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP,jac_affine_inv_1_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP,jac_affine_inv_1_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP,jac_affine_inv_1_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP,jac_affine_inv_0_0_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP,jac_affine_inv_0_1_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP,jac_affine_inv_0_2_BLUE_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -758,79 +758,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4)) + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4)) + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_q_16 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_q_16 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_q_17 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_q_17 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_q_18 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_q_18 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_BLUE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_BLUE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_BLUE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_BLUE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_BLUE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_BLUE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_BLUE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_BLUE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -842,16 +842,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -865,54 +865,54 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -942,57 +942,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN,abs_det_jac_affine_BLUE_DOWN));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN,jac_affine_inv_2_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN,jac_affine_inv_2_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN,jac_affine_inv_2_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN,jac_affine_inv_1_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN,jac_affine_inv_1_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN,jac_affine_inv_1_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN,jac_affine_inv_0_0_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN,jac_affine_inv_0_1_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN,jac_affine_inv_0_2_BLUE_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -1027,79 +1027,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -1111,16 +1111,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -1134,51 +1134,51 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -1208,57 +1208,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP,abs_det_jac_affine_GREEN_UP));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP,jac_affine_inv_2_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP,jac_affine_inv_2_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP,jac_affine_inv_2_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP,jac_affine_inv_1_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP,jac_affine_inv_1_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP,jac_affine_inv_1_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP,jac_affine_inv_0_0_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP,jac_affine_inv_0_1_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP,jac_affine_inv_0_2_GREEN_UP)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -1293,79 +1293,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4)) + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4)) + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_q_16 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_q_16 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_q_17 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_q_17 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_q_18 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_q_18 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_GREEN_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_GREEN_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_GREEN_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_GREEN_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_GREEN_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_GREEN_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_GREEN_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_GREEN_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -1377,16 +1377,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -1400,54 +1400,54 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
@@ -1477,57 +1477,57 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 __m256d q_acc_9_9 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const __m256d tmp_q_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_3 = _mm256_add_pd(tmp_q_1,tmp_q_2);
-                   const __m256d tmp_q_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_q_0),tmp_q_3);
-                   const __m256d tmp_q_5 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_6 = _mm256_mul_pd(tmp_q_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_7 = _mm256_mul_pd(tmp_q_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
-                   const __m256d tmp_q_9 = _mm256_mul_pd(tmp_q_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
-                   const __m256d tmp_q_11 = _mm256_mul_pd(tmp_q_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
-                   const __m256d tmp_q_13 = _mm256_mul_pd(tmp_q_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
-                   const __m256d tmp_q_14 = _mm256_add_pd(tmp_q_5,tmp_q_6);
-                   const __m256d tmp_q_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_q_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_q_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_q_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_q_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_q_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_q_11),tmp_q_13),tmp_q_14),tmp_q_7),tmp_q_9))),_mm256_mul_pd(k_dof_4,tmp_q_7)),_mm256_mul_pd(k_dof_5,tmp_q_6)),_mm256_mul_pd(k_dof_6,tmp_q_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
-                   const __m256d tmp_q_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const __m256d tmp_q_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                   const __m256d tmp_q_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
-                   const __m256d tmp_q_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_q_0);
-                   const __m256d tmp_q_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
-                   const __m256d tmp_q_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_q_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
-                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_q_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))))));
-                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_q_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))));
-                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_add_pd(_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_add_pd(_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_add_pd(_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26)),_mm256_add_pd(_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28)),_mm256_add_pd(_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30)),_mm256_add_pd(_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32)),_mm256_add_pd(_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34)),_mm256_add_pd(_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36)),_mm256_add_pd(_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_20,tmp_q_20,tmp_q_20,tmp_q_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_26,tmp_q_26,tmp_q_26,tmp_q_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_22,tmp_q_22,tmp_q_22,tmp_q_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_28,tmp_q_28,tmp_q_28,tmp_q_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_24,tmp_q_24,tmp_q_24,tmp_q_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_30,tmp_q_30,tmp_q_30,tmp_q_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_19,tmp_q_19,tmp_q_19,tmp_q_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_32,tmp_q_32,tmp_q_32,tmp_q_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_21,tmp_q_21,tmp_q_21,tmp_q_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_34,tmp_q_34,tmp_q_34,tmp_q_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_23,tmp_q_23,tmp_q_23,tmp_q_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_36,tmp_q_36,tmp_q_36,tmp_q_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
-                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_q_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_25,tmp_q_25,tmp_q_25,tmp_q_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_31,tmp_q_31,tmp_q_31,tmp_q_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_27,tmp_q_27,tmp_q_27,tmp_q_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_33,tmp_q_33,tmp_q_33,tmp_q_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_29,tmp_q_29,tmp_q_29,tmp_q_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_q_35,tmp_q_35,tmp_q_35,tmp_q_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_q_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_1 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_2 = _mm256_mul_pd(_mm256_set_pd(4.0,4.0,4.0,4.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_3 = _mm256_add_pd(tmp_qloop_1,tmp_qloop_2);
+                   const __m256d tmp_qloop_4 = _mm256_add_pd(_mm256_add_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),tmp_qloop_0),tmp_qloop_3);
+                   const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_6 = _mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_7 = _mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_8 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]));
+                   const __m256d tmp_qloop_9 = _mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_10 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]));
+                   const __m256d tmp_qloop_11 = _mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_12 = _mm256_mul_pd(_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]));
+                   const __m256d tmp_qloop_13 = _mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(2.0,2.0,2.0,2.0));
+                   const __m256d tmp_qloop_14 = _mm256_add_pd(tmp_qloop_5,tmp_qloop_6);
+                   const __m256d tmp_qloop_15 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_1,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),tmp_qloop_9)),_mm256_mul_pd(k_dof_2,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),tmp_qloop_11))),_mm256_mul_pd(k_dof_3,_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),tmp_qloop_13))),_mm256_mul_pd(k_dof_9,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_14,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_8,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_1))),_mm256_mul_pd(k_dof_8,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_5,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_10,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_2))),_mm256_mul_pd(k_dof_7,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(tmp_qloop_12,_mm256_set_pd(-4.0,-4.0,-4.0,-4.0))),tmp_qloop_0))),_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-3.0,-3.0,-3.0,-3.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),tmp_qloop_11),tmp_qloop_13),tmp_qloop_14),tmp_qloop_7),tmp_qloop_9))),_mm256_mul_pd(k_dof_4,tmp_qloop_7)),_mm256_mul_pd(k_dof_5,tmp_qloop_6)),_mm256_mul_pd(k_dof_6,tmp_qloop_5)),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_set_pd(abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN,abs_det_jac_affine_GREEN_DOWN));
+                   const __m256d tmp_qloop_16 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_17 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const __m256d tmp_qloop_18 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q])),_mm256_add_pd(_mm256_set_pd(-0.25,-0.25,-0.25,-0.25),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(16.0,16.0,16.0,16.0));
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                   const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_3,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(4.0,4.0,4.0,4.0));
+                   const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_set_pd(-4.0,-4.0,-4.0,-4.0),tmp_qloop_0);
+                   const __m256d tmp_qloop_39 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q])));
+                   const __m256d tmp_qloop_40 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(tmp_qloop_38,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))),_mm256_mul_pd(_mm256_set_pd(-8.0,-8.0,-8.0,-8.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])));
+                   const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))))),_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_4,_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))))));
+                   const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_16,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_17,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_mul_pd(tmp_qloop_18,_mm256_mul_pd(_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))));
+                   const __m256d q_tmp_4_4 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_5_5 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_6_6 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),_mm256_add_pd(_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_7_7 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN,jac_affine_inv_2_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_28,tmp_qloop_28,tmp_qloop_28,tmp_qloop_28))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN,jac_affine_inv_2_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_30,tmp_qloop_30,tmp_qloop_30,tmp_qloop_30))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_37,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN,jac_affine_inv_2_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_8_8 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_19,tmp_qloop_19,tmp_qloop_19,tmp_qloop_19)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_32,tmp_qloop_32,tmp_qloop_32,tmp_qloop_32))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN,jac_affine_inv_1_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN,jac_affine_inv_1_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_39,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN,jac_affine_inv_1_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
+                   const __m256d q_tmp_9_9 = _mm256_mul_pd(tmp_qloop_15,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_31,tmp_qloop_31,tmp_qloop_31,tmp_qloop_31))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN,jac_affine_inv_0_0_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_33,tmp_qloop_33,tmp_qloop_33,tmp_qloop_33))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN,jac_affine_inv_0_1_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN))),_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_29,tmp_qloop_29,tmp_qloop_29,tmp_qloop_29)),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_35,tmp_qloop_35,tmp_qloop_35,tmp_qloop_35))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,_mm256_set_pd(0.25,0.25,0.25,0.25)),_mm256_set_pd(jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN,jac_affine_inv_0_2_GREEN_DOWN)))),_mm256_set_pd(16.0,16.0,16.0,16.0))));
                    q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0);
                    q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1);
                    q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2);
@@ -1562,79 +1562,79 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-                const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-                const real_t k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
-                real_t q_acc_4_4 = 0.0;
-                real_t q_acc_5_5 = 0.0;
-                real_t q_acc_6_6 = 0.0;
-                real_t q_acc_7_7 = 0.0;
-                real_t q_acc_8_8 = 0.0;
-                real_t q_acc_9_9 = 0.0;
+                const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+                const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+                const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_4_4 = 0.0;
+                walberla::float64 q_acc_5_5 = 0.0;
+                walberla::float64 q_acc_6_6 = 0.0;
+                walberla::float64 q_acc_7_7 = 0.0;
+                walberla::float64 q_acc_8_8 = 0.0;
+                walberla::float64 q_acc_9_9 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                   const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                   const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                   const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                   const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                   const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                   const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                   const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                   const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                   const real_t tmp_q_9 = tmp_q_8*2.0;
-                   const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                   const real_t tmp_q_11 = tmp_q_10*2.0;
-                   const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                   const real_t tmp_q_13 = tmp_q_12*2.0;
-                   const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                   const real_t tmp_q_15 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                   const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                   const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                   const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                   const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                   const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                   const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                   const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                   const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                   const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                   const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                   const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4)));
-                   const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_q_16);
-                   const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_q_17);
-                   const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_q_18);
-                   const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                   const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                   const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                   const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                   const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                   const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                   const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                   const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                   const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                   const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                   const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                   const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                   const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                   const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                   const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                   const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                   const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                   const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                   const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                   const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                   const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                   const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                   const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                   const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                   const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                   const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4)));
+                   const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_qloop_16);
+                   const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_qloop_17);
+                   const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_qloop_18);
+                   const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                   const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                   const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                   const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -1646,16 +1646,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                    q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                    q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
-                const real_t elMatDiag_4 = q_acc_4_4;
-                const real_t elMatDiag_5 = q_acc_5_5;
-                const real_t elMatDiag_6 = q_acc_6_6;
-                const real_t elMatDiag_7 = q_acc_7_7;
-                const real_t elMatDiag_8 = q_acc_8_8;
-                const real_t elMatDiag_9 = q_acc_9_9;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_4 = q_acc_4_4;
+                const walberla::float64 elMatDiag_5 = q_acc_5_5;
+                const walberla::float64 elMatDiag_6 = q_acc_6_6;
+                const walberla::float64 elMatDiag_7 = q_acc_7_7;
+                const walberla::float64 elMatDiag_8 = q_acc_8_8;
+                const walberla::float64 elMatDiag_9 = q_acc_9_9;
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_2D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_2D.cpp
index 4069e41b4d8258df01b3af4ed1f2d6fd3a4ec48c..eeeacab6ede6e112398fd40f40c5a10352a12506 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_2D.cpp
@@ -56,61 +56,61 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_2*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1));
-                const real_t q_tmp_0_1 = tmp_q_2*(jac_affine_inv_0_0_GRAY*tmp_q_0 + jac_affine_inv_0_1_GRAY*tmp_q_1);
-                const real_t q_tmp_0_2 = tmp_q_2*(jac_affine_inv_1_0_GRAY*tmp_q_0 + jac_affine_inv_1_1_GRAY*tmp_q_1);
-                const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-                const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
-                const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*tmp_qloop_0 + jac_affine_inv_0_1_GRAY*tmp_qloop_1);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(jac_affine_inv_1_0_GRAY*tmp_qloop_0 + jac_affine_inv_1_1_GRAY*tmp_qloop_1);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -118,64 +118,64 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t Dummy_1808 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_1809 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 Dummy_1843 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_1844 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_2*((Dummy_1808*Dummy_1808) + (Dummy_1809*Dummy_1809));
-                const real_t q_tmp_0_1 = tmp_q_2*(Dummy_1808*jac_affine_inv_0_0_BLUE + Dummy_1809*jac_affine_inv_0_1_BLUE);
-                const real_t q_tmp_0_2 = tmp_q_2*(Dummy_1808*jac_affine_inv_1_0_BLUE + Dummy_1809*jac_affine_inv_1_1_BLUE);
-                const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
-                const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
+                const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((Dummy_1843*Dummy_1843) + (Dummy_1844*Dummy_1844));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(Dummy_1843*jac_affine_inv_0_0_BLUE + Dummy_1844*jac_affine_inv_0_1_BLUE);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(Dummy_1843*jac_affine_inv_1_0_BLUE + Dummy_1844*jac_affine_inv_1_1_BLUE);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -183,9 +183,9 @@ void P1ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_3D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_3D.cpp
index c0a681f703e71794122b034d691f2e9d8dc96427..475c6e9f4231d7179dab8e702960e58b1da2b173 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_apply_macro_3D.cpp
@@ -56,96 +56,96 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t tmp_q_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_qloop_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1) + (tmp_q_2*tmp_q_2));
-                const real_t q_tmp_0_1 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*tmp_q_0 + jac_affine_inv_0_1_WHITE_UP*tmp_q_1 + jac_affine_inv_0_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_0_2 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*tmp_q_0 + jac_affine_inv_1_1_WHITE_UP*tmp_q_1 + jac_affine_inv_1_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_0_3 = tmp_q_3*(jac_affine_inv_2_0_WHITE_UP*tmp_q_0 + jac_affine_inv_2_1_WHITE_UP*tmp_q_1 + jac_affine_inv_2_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1) + (tmp_qloop_2*tmp_qloop_2));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_0_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -157,107 +157,107 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t Dummy_1918 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_1919 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_1920 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 Dummy_1953 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_1954 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_1955 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1918*Dummy_1918) + (Dummy_1919*Dummy_1919) + (Dummy_1920*Dummy_1920));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1918*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_0_2_WHITE_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1918*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_1_2_WHITE_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1918*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1919*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1920*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1953*Dummy_1953) + (Dummy_1954*Dummy_1954) + (Dummy_1955*Dummy_1955));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_0_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_0_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_0_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_1_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_1_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_1_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1953*jac_affine_inv_2_0_WHITE_DOWN + Dummy_1954*jac_affine_inv_2_1_WHITE_DOWN + Dummy_1955*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -269,101 +269,101 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t Dummy_1921 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_1922 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_1923 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 Dummy_1956 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_1957 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_1958 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1921*Dummy_1921) + (Dummy_1922*Dummy_1922) + (Dummy_1923*Dummy_1923));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1921*jac_affine_inv_0_0_BLUE_UP + Dummy_1922*jac_affine_inv_0_1_BLUE_UP + Dummy_1923*jac_affine_inv_0_2_BLUE_UP);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1921*jac_affine_inv_1_0_BLUE_UP + Dummy_1922*jac_affine_inv_1_1_BLUE_UP + Dummy_1923*jac_affine_inv_1_2_BLUE_UP);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1921*jac_affine_inv_2_0_BLUE_UP + Dummy_1922*jac_affine_inv_2_1_BLUE_UP + Dummy_1923*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1956*Dummy_1956) + (Dummy_1957*Dummy_1957) + (Dummy_1958*Dummy_1958));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_0_0_BLUE_UP + Dummy_1957*jac_affine_inv_0_1_BLUE_UP + Dummy_1958*jac_affine_inv_0_2_BLUE_UP);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_1_0_BLUE_UP + Dummy_1957*jac_affine_inv_1_1_BLUE_UP + Dummy_1958*jac_affine_inv_1_2_BLUE_UP);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1956*jac_affine_inv_2_0_BLUE_UP + Dummy_1957*jac_affine_inv_2_1_BLUE_UP + Dummy_1958*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -375,104 +375,104 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t Dummy_1924 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_1925 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_1926 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 Dummy_1959 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_1960 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_1961 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1924*Dummy_1924) + (Dummy_1925*Dummy_1925) + (Dummy_1926*Dummy_1926));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1924*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_0_2_BLUE_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1924*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_1_2_BLUE_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1924*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1925*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1926*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1959*Dummy_1959) + (Dummy_1960*Dummy_1960) + (Dummy_1961*Dummy_1961));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_0_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_0_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_0_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_1_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_1_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_1_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1959*jac_affine_inv_2_0_BLUE_DOWN + Dummy_1960*jac_affine_inv_2_1_BLUE_DOWN + Dummy_1961*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -484,101 +484,101 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t Dummy_1927 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_1928 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_1929 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 Dummy_1962 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_1963 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_1964 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1927*Dummy_1927) + (Dummy_1928*Dummy_1928) + (Dummy_1929*Dummy_1929));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1927*jac_affine_inv_0_0_GREEN_UP + Dummy_1928*jac_affine_inv_0_1_GREEN_UP + Dummy_1929*jac_affine_inv_0_2_GREEN_UP);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1927*jac_affine_inv_1_0_GREEN_UP + Dummy_1928*jac_affine_inv_1_1_GREEN_UP + Dummy_1929*jac_affine_inv_1_2_GREEN_UP);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1927*jac_affine_inv_2_0_GREEN_UP + Dummy_1928*jac_affine_inv_2_1_GREEN_UP + Dummy_1929*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1962*Dummy_1962) + (Dummy_1963*Dummy_1963) + (Dummy_1964*Dummy_1964));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_0_0_GREEN_UP + Dummy_1963*jac_affine_inv_0_1_GREEN_UP + Dummy_1964*jac_affine_inv_0_2_GREEN_UP);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_1_0_GREEN_UP + Dummy_1963*jac_affine_inv_1_1_GREEN_UP + Dummy_1964*jac_affine_inv_1_2_GREEN_UP);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1962*jac_affine_inv_2_0_GREEN_UP + Dummy_1963*jac_affine_inv_2_1_GREEN_UP + Dummy_1964*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -590,104 +590,104 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t Dummy_1930 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_1931 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_1932 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 Dummy_1965 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_1966 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_1967 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_1930*Dummy_1930) + (Dummy_1931*Dummy_1931) + (Dummy_1932*Dummy_1932));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_1930*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_0_2_GREEN_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_1930*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_1_2_GREEN_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_1930*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1931*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1932*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_1965*Dummy_1965) + (Dummy_1966*Dummy_1966) + (Dummy_1967*Dummy_1967));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_0_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_0_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_0_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_1_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_1_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_1_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_1965*jac_affine_inv_2_0_GREEN_DOWN + Dummy_1966*jac_affine_inv_2_1_GREEN_DOWN + Dummy_1967*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -699,10 +699,10 @@ void P1ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
index de22f855cec58d2975bbb0750868d4b15198ed4c..6ef06a51c634b7c81f732b09d15b195f23e2b7a1 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,108 +56,108 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t * RESTRICT  _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 * RESTRICT  _data_k, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)*(-jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY)) + ((-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)*(-jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)*(-jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE)) + ((-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)*(-jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 489ba1294a46d519d82f9d0f06b716a9702cc64a..f3188c7424209acd9064900d2e84b64939d14c87 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,503 +56,503 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t * RESTRICT  _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 * RESTRICT  _data_k, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)*(-jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP)) + ((-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)*(-jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP)) + ((-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)*(-jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)*(-jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN)) + ((-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)*(-jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN)) + ((-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)*(-jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)*(-jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP)) + ((-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)*(-jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP)) + ((-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)*(-jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)*(-jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN)) + ((-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)*(-jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN)) + ((-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)*(-jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)*(-jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP)) + ((-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)*(-jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP)) + ((-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)*(-jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_0*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
-                const real_t q_tmp_1_1 = tmp_q_0*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                const real_t q_tmp_2_2 = tmp_q_0*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                const real_t q_tmp_3_3 = tmp_q_0*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                const walberla::float64 tmp_qloop_0 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_0*(((-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)*(-jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN)) + ((-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)*(-jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN)) + ((-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)*(-jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_0*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_0*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_0*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp
index c57484a4bd0ce4e088b12f23b85f50c7e4d7bae8..f9522a27171d8baaf82e7b790482e6e4b0cbd77f 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp
@@ -56,58 +56,58 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_GRAY - jac_affine_inv_1_0_GRAY;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_GRAY - jac_affine_inv_1_1_GRAY;
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_2*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1));
-                const real_t q_tmp_0_1 = tmp_q_2*(jac_affine_inv_0_0_GRAY*tmp_q_0 + jac_affine_inv_0_1_GRAY*tmp_q_1);
-                const real_t q_tmp_0_2 = tmp_q_2*(jac_affine_inv_1_0_GRAY*tmp_q_0 + jac_affine_inv_1_1_GRAY*tmp_q_1);
-                const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
-                const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
-                const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
+                const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_GRAY*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*tmp_qloop_0 + jac_affine_inv_0_1_GRAY*tmp_qloop_1);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(jac_affine_inv_1_0_GRAY*tmp_qloop_0 + jac_affine_inv_1_1_GRAY*tmp_qloop_1);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY) + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_GRAY*jac_affine_inv_1_0_GRAY + jac_affine_inv_0_1_GRAY*jac_affine_inv_1_1_GRAY);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY) + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -115,19 +115,19 @@ void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, real
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
          
              std::vector< uint_t > _data_rowIdx( 3 );
              std::vector< uint_t > _data_colIdx( 3 );
-             std::vector< real_t > _data_mat( 9 );
+             std::vector< walberla::float64 > _data_mat( 9 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
@@ -140,67 +140,67 @@ void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_1_0));
-             _data_mat[4] = ((real_t)(elMat_1_1));
-             _data_mat[5] = ((real_t)(elMat_1_2));
-             _data_mat[6] = ((real_t)(elMat_2_0));
-             _data_mat[7] = ((real_t)(elMat_2_1));
-             _data_mat[8] = ((real_t)(elMat_2_2));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_1_0));
+             _data_mat[4] = ((walberla::float64)(elMat_1_1));
+             _data_mat[5] = ((walberla::float64)(elMat_1_2));
+             _data_mat[6] = ((walberla::float64)(elMat_2_0));
+             _data_mat[7] = ((walberla::float64)(elMat_2_1));
+             _data_mat[8] = ((walberla::float64)(elMat_2_2));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
-       const real_t Dummy_1959 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
-       const real_t Dummy_1960 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
+       const walberla::float64 Dummy_1994 = -jac_affine_inv_0_0_BLUE - jac_affine_inv_1_0_BLUE;
+       const walberla::float64 Dummy_1995 = -jac_affine_inv_0_1_BLUE - jac_affine_inv_1_1_BLUE;
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_2*((Dummy_1959*Dummy_1959) + (Dummy_1960*Dummy_1960));
-                const real_t q_tmp_0_1 = tmp_q_2*(Dummy_1959*jac_affine_inv_0_0_BLUE + Dummy_1960*jac_affine_inv_0_1_BLUE);
-                const real_t q_tmp_0_2 = tmp_q_2*(Dummy_1959*jac_affine_inv_1_0_BLUE + Dummy_1960*jac_affine_inv_1_1_BLUE);
-                const real_t q_tmp_1_1 = tmp_q_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
-                const real_t q_tmp_1_2 = tmp_q_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
-                const real_t q_tmp_2_2 = tmp_q_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
+                const walberla::float64 tmp_qloop_2 = abs_det_jac_affine_BLUE*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_2*((Dummy_1994*Dummy_1994) + (Dummy_1995*Dummy_1995));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_2*(Dummy_1994*jac_affine_inv_0_0_BLUE + Dummy_1995*jac_affine_inv_0_1_BLUE);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_2*(Dummy_1994*jac_affine_inv_1_0_BLUE + Dummy_1995*jac_affine_inv_1_1_BLUE);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_2*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE) + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_2*(jac_affine_inv_0_0_BLUE*jac_affine_inv_1_0_BLUE + jac_affine_inv_0_1_BLUE*jac_affine_inv_1_1_BLUE);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_2*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE) + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -208,19 +208,19 @@ void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, real
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
          
              std::vector< uint_t > _data_rowIdx( 3 );
              std::vector< uint_t > _data_colIdx( 3 );
-             std::vector< real_t > _data_mat( 9 );
+             std::vector< walberla::float64 > _data_mat( 9 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]));
@@ -233,15 +233,15 @@ void P1ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_1_0));
-             _data_mat[4] = ((real_t)(elMat_1_1));
-             _data_mat[5] = ((real_t)(elMat_1_2));
-             _data_mat[6] = ((real_t)(elMat_2_0));
-             _data_mat[7] = ((real_t)(elMat_2_1));
-             _data_mat[8] = ((real_t)(elMat_2_2));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_1_0));
+             _data_mat[4] = ((walberla::float64)(elMat_1_1));
+             _data_mat[5] = ((walberla::float64)(elMat_1_2));
+             _data_mat[6] = ((walberla::float64)(elMat_2_0));
+             _data_mat[7] = ((walberla::float64)(elMat_2_1));
+             _data_mat[8] = ((walberla::float64)(elMat_2_2));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp
index f4eef4c1811834b93b720540bd375834b0e002a9..84ecb308f36823b96976f5eb7c79de7190353814 100644
--- a/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp
@@ -56,92 +56,92 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_k, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_k, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
-       const real_t tmp_q_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
-       const real_t tmp_q_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
-       const real_t tmp_q_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 tmp_qloop_0 = -jac_affine_inv_0_0_WHITE_UP - jac_affine_inv_1_0_WHITE_UP - jac_affine_inv_2_0_WHITE_UP;
+       const walberla::float64 tmp_qloop_1 = -jac_affine_inv_0_1_WHITE_UP - jac_affine_inv_1_1_WHITE_UP - jac_affine_inv_2_1_WHITE_UP;
+       const walberla::float64 tmp_qloop_2 = -jac_affine_inv_0_2_WHITE_UP - jac_affine_inv_1_2_WHITE_UP - jac_affine_inv_2_2_WHITE_UP;
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((tmp_q_0*tmp_q_0) + (tmp_q_1*tmp_q_1) + (tmp_q_2*tmp_q_2));
-                const real_t q_tmp_0_1 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*tmp_q_0 + jac_affine_inv_0_1_WHITE_UP*tmp_q_1 + jac_affine_inv_0_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_0_2 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*tmp_q_0 + jac_affine_inv_1_1_WHITE_UP*tmp_q_1 + jac_affine_inv_1_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_0_3 = tmp_q_3*(jac_affine_inv_2_0_WHITE_UP*tmp_q_0 + jac_affine_inv_2_1_WHITE_UP*tmp_q_1 + jac_affine_inv_2_2_WHITE_UP*tmp_q_2);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((tmp_qloop_0*tmp_qloop_0) + (tmp_qloop_1*tmp_qloop_1) + (tmp_qloop_2*tmp_qloop_2));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_0_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_0 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP) + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP) + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP) + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP) + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP + jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP + jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP) + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP) + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -153,26 +153,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -187,114 +187,114 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
-       const real_t Dummy_2069 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
-       const real_t Dummy_2070 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
-       const real_t Dummy_2071 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 Dummy_2104 = -jac_affine_inv_0_0_WHITE_DOWN - jac_affine_inv_1_0_WHITE_DOWN - jac_affine_inv_2_0_WHITE_DOWN;
+       const walberla::float64 Dummy_2105 = -jac_affine_inv_0_1_WHITE_DOWN - jac_affine_inv_1_1_WHITE_DOWN - jac_affine_inv_2_1_WHITE_DOWN;
+       const walberla::float64 Dummy_2106 = -jac_affine_inv_0_2_WHITE_DOWN - jac_affine_inv_1_2_WHITE_DOWN - jac_affine_inv_2_2_WHITE_DOWN;
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_2069*Dummy_2069) + (Dummy_2070*Dummy_2070) + (Dummy_2071*Dummy_2071));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_2069*jac_affine_inv_0_0_WHITE_DOWN + Dummy_2070*jac_affine_inv_0_1_WHITE_DOWN + Dummy_2071*jac_affine_inv_0_2_WHITE_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_2069*jac_affine_inv_1_0_WHITE_DOWN + Dummy_2070*jac_affine_inv_1_1_WHITE_DOWN + Dummy_2071*jac_affine_inv_1_2_WHITE_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_2069*jac_affine_inv_2_0_WHITE_DOWN + Dummy_2070*jac_affine_inv_2_1_WHITE_DOWN + Dummy_2071*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_2104*Dummy_2104) + (Dummy_2105*Dummy_2105) + (Dummy_2106*Dummy_2106));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_2104*jac_affine_inv_0_0_WHITE_DOWN + Dummy_2105*jac_affine_inv_0_1_WHITE_DOWN + Dummy_2106*jac_affine_inv_0_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_2104*jac_affine_inv_1_0_WHITE_DOWN + Dummy_2105*jac_affine_inv_1_1_WHITE_DOWN + Dummy_2106*jac_affine_inv_1_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_2104*jac_affine_inv_2_0_WHITE_DOWN + Dummy_2105*jac_affine_inv_2_1_WHITE_DOWN + Dummy_2106*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN) + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN) + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN) + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN) + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN + jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN + jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN) + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN) + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -306,26 +306,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -340,108 +340,108 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
-       const real_t Dummy_2072 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
-       const real_t Dummy_2073 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
-       const real_t Dummy_2074 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 Dummy_2107 = -jac_affine_inv_0_0_BLUE_UP - jac_affine_inv_1_0_BLUE_UP - jac_affine_inv_2_0_BLUE_UP;
+       const walberla::float64 Dummy_2108 = -jac_affine_inv_0_1_BLUE_UP - jac_affine_inv_1_1_BLUE_UP - jac_affine_inv_2_1_BLUE_UP;
+       const walberla::float64 Dummy_2109 = -jac_affine_inv_0_2_BLUE_UP - jac_affine_inv_1_2_BLUE_UP - jac_affine_inv_2_2_BLUE_UP;
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_2072*Dummy_2072) + (Dummy_2073*Dummy_2073) + (Dummy_2074*Dummy_2074));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_2072*jac_affine_inv_0_0_BLUE_UP + Dummy_2073*jac_affine_inv_0_1_BLUE_UP + Dummy_2074*jac_affine_inv_0_2_BLUE_UP);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_2072*jac_affine_inv_1_0_BLUE_UP + Dummy_2073*jac_affine_inv_1_1_BLUE_UP + Dummy_2074*jac_affine_inv_1_2_BLUE_UP);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_2072*jac_affine_inv_2_0_BLUE_UP + Dummy_2073*jac_affine_inv_2_1_BLUE_UP + Dummy_2074*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_2107*Dummy_2107) + (Dummy_2108*Dummy_2108) + (Dummy_2109*Dummy_2109));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_2107*jac_affine_inv_0_0_BLUE_UP + Dummy_2108*jac_affine_inv_0_1_BLUE_UP + Dummy_2109*jac_affine_inv_0_2_BLUE_UP);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_2107*jac_affine_inv_1_0_BLUE_UP + Dummy_2108*jac_affine_inv_1_1_BLUE_UP + Dummy_2109*jac_affine_inv_1_2_BLUE_UP);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_2107*jac_affine_inv_2_0_BLUE_UP + Dummy_2108*jac_affine_inv_2_1_BLUE_UP + Dummy_2109*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP) + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP) + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP) + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP) + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP + jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP + jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP) + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP) + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -453,26 +453,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -487,111 +487,111 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
-       const real_t Dummy_2075 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
-       const real_t Dummy_2076 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
-       const real_t Dummy_2077 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 Dummy_2110 = -jac_affine_inv_0_0_BLUE_DOWN - jac_affine_inv_1_0_BLUE_DOWN - jac_affine_inv_2_0_BLUE_DOWN;
+       const walberla::float64 Dummy_2111 = -jac_affine_inv_0_1_BLUE_DOWN - jac_affine_inv_1_1_BLUE_DOWN - jac_affine_inv_2_1_BLUE_DOWN;
+       const walberla::float64 Dummy_2112 = -jac_affine_inv_0_2_BLUE_DOWN - jac_affine_inv_1_2_BLUE_DOWN - jac_affine_inv_2_2_BLUE_DOWN;
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_2075*Dummy_2075) + (Dummy_2076*Dummy_2076) + (Dummy_2077*Dummy_2077));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_2075*jac_affine_inv_0_0_BLUE_DOWN + Dummy_2076*jac_affine_inv_0_1_BLUE_DOWN + Dummy_2077*jac_affine_inv_0_2_BLUE_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_2075*jac_affine_inv_1_0_BLUE_DOWN + Dummy_2076*jac_affine_inv_1_1_BLUE_DOWN + Dummy_2077*jac_affine_inv_1_2_BLUE_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_2075*jac_affine_inv_2_0_BLUE_DOWN + Dummy_2076*jac_affine_inv_2_1_BLUE_DOWN + Dummy_2077*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_2110*Dummy_2110) + (Dummy_2111*Dummy_2111) + (Dummy_2112*Dummy_2112));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_2110*jac_affine_inv_0_0_BLUE_DOWN + Dummy_2111*jac_affine_inv_0_1_BLUE_DOWN + Dummy_2112*jac_affine_inv_0_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_2110*jac_affine_inv_1_0_BLUE_DOWN + Dummy_2111*jac_affine_inv_1_1_BLUE_DOWN + Dummy_2112*jac_affine_inv_1_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_2110*jac_affine_inv_2_0_BLUE_DOWN + Dummy_2111*jac_affine_inv_2_1_BLUE_DOWN + Dummy_2112*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN) + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN) + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN) + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN) + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN + jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN + jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN) + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN) + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -603,26 +603,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]));
@@ -637,108 +637,108 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
-       const real_t Dummy_2078 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
-       const real_t Dummy_2079 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
-       const real_t Dummy_2080 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 Dummy_2113 = -jac_affine_inv_0_0_GREEN_UP - jac_affine_inv_1_0_GREEN_UP - jac_affine_inv_2_0_GREEN_UP;
+       const walberla::float64 Dummy_2114 = -jac_affine_inv_0_1_GREEN_UP - jac_affine_inv_1_1_GREEN_UP - jac_affine_inv_2_1_GREEN_UP;
+       const walberla::float64 Dummy_2115 = -jac_affine_inv_0_2_GREEN_UP - jac_affine_inv_1_2_GREEN_UP - jac_affine_inv_2_2_GREEN_UP;
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_2078*Dummy_2078) + (Dummy_2079*Dummy_2079) + (Dummy_2080*Dummy_2080));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_2078*jac_affine_inv_0_0_GREEN_UP + Dummy_2079*jac_affine_inv_0_1_GREEN_UP + Dummy_2080*jac_affine_inv_0_2_GREEN_UP);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_2078*jac_affine_inv_1_0_GREEN_UP + Dummy_2079*jac_affine_inv_1_1_GREEN_UP + Dummy_2080*jac_affine_inv_1_2_GREEN_UP);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_2078*jac_affine_inv_2_0_GREEN_UP + Dummy_2079*jac_affine_inv_2_1_GREEN_UP + Dummy_2080*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_2113*Dummy_2113) + (Dummy_2114*Dummy_2114) + (Dummy_2115*Dummy_2115));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_2113*jac_affine_inv_0_0_GREEN_UP + Dummy_2114*jac_affine_inv_0_1_GREEN_UP + Dummy_2115*jac_affine_inv_0_2_GREEN_UP);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_2113*jac_affine_inv_1_0_GREEN_UP + Dummy_2114*jac_affine_inv_1_1_GREEN_UP + Dummy_2115*jac_affine_inv_1_2_GREEN_UP);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_2113*jac_affine_inv_2_0_GREEN_UP + Dummy_2114*jac_affine_inv_2_1_GREEN_UP + Dummy_2115*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP) + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP) + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP) + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP) + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP + jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP + jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP) + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP) + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -750,26 +750,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -784,111 +784,111 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
-       const real_t Dummy_2081 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
-       const real_t Dummy_2082 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
-       const real_t Dummy_2083 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 Dummy_2116 = -jac_affine_inv_0_0_GREEN_DOWN - jac_affine_inv_1_0_GREEN_DOWN - jac_affine_inv_2_0_GREEN_DOWN;
+       const walberla::float64 Dummy_2117 = -jac_affine_inv_0_1_GREEN_DOWN - jac_affine_inv_1_1_GREEN_DOWN - jac_affine_inv_2_1_GREEN_DOWN;
+       const walberla::float64 Dummy_2118 = -jac_affine_inv_0_2_GREEN_DOWN - jac_affine_inv_1_2_GREEN_DOWN - jac_affine_inv_2_2_GREEN_DOWN;
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
-                const real_t q_tmp_0_0 = tmp_q_3*((Dummy_2081*Dummy_2081) + (Dummy_2082*Dummy_2082) + (Dummy_2083*Dummy_2083));
-                const real_t q_tmp_0_1 = tmp_q_3*(Dummy_2081*jac_affine_inv_0_0_GREEN_DOWN + Dummy_2082*jac_affine_inv_0_1_GREEN_DOWN + Dummy_2083*jac_affine_inv_0_2_GREEN_DOWN);
-                const real_t q_tmp_0_2 = tmp_q_3*(Dummy_2081*jac_affine_inv_1_0_GREEN_DOWN + Dummy_2082*jac_affine_inv_1_1_GREEN_DOWN + Dummy_2083*jac_affine_inv_1_2_GREEN_DOWN);
-                const real_t q_tmp_0_3 = tmp_q_3*(Dummy_2081*jac_affine_inv_2_0_GREEN_DOWN + Dummy_2082*jac_affine_inv_2_1_GREEN_DOWN + Dummy_2083*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_1_1 = tmp_q_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
-                const real_t q_tmp_1_2 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
-                const real_t q_tmp_1_3 = tmp_q_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_2_2 = tmp_q_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
-                const real_t q_tmp_2_3 = tmp_q_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
-                const real_t q_tmp_3_3 = tmp_q_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
+                const walberla::float64 tmp_qloop_3 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_3*((Dummy_2116*Dummy_2116) + (Dummy_2117*Dummy_2117) + (Dummy_2118*Dummy_2118));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_3*(Dummy_2116*jac_affine_inv_0_0_GREEN_DOWN + Dummy_2117*jac_affine_inv_0_1_GREEN_DOWN + Dummy_2118*jac_affine_inv_0_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_3*(Dummy_2116*jac_affine_inv_1_0_GREEN_DOWN + Dummy_2117*jac_affine_inv_1_1_GREEN_DOWN + Dummy_2118*jac_affine_inv_1_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_3*(Dummy_2116*jac_affine_inv_2_0_GREEN_DOWN + Dummy_2117*jac_affine_inv_2_1_GREEN_DOWN + Dummy_2118*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_3*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN) + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN) + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_3*(jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_3*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN) + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN) + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN));
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_3*(jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN + jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN + jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_3*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN) + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN) + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -900,26 +900,26 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -934,22 +934,22 @@ void P1ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, real
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_2D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_2D.cpp
index 73bb116d8a940818f5ca321f9b1b8a48083b3edc..462c745d3dc16dfe4de11fb892ed3e244f420071 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_2D.cpp
@@ -56,125 +56,125 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, real_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t * RESTRICT  _data_srcEdge, real_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::apply_macro_2D( walberla::float64 * RESTRICT  _data_dstEdge, walberla::float64 * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 * RESTRICT  _data_srcEdge, walberla::float64 * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t src_dof_3 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 src_dof_3 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2;
-                const real_t tmp_q_4 = jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2;
-                const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_GRAY*tmp_q_11;
-                const real_t tmp_q_13 = jac_affine_inv_0_1_GRAY*tmp_q_11;
-                const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                const real_t tmp_q_15 = jac_affine_inv_1_0_GRAY*tmp_q_14;
-                const real_t tmp_q_16 = jac_affine_inv_1_1_GRAY*tmp_q_14;
-                const real_t tmp_q_17 = jac_affine_inv_1_0_GRAY*tmp_q_0;
-                const real_t tmp_q_18 = jac_affine_inv_0_0_GRAY*tmp_q_1;
-                const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                const real_t tmp_q_20 = jac_affine_inv_1_1_GRAY*tmp_q_0;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GRAY*tmp_q_1;
-                const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GRAY*tmp_q_23 - tmp_q_18;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GRAY*tmp_q_23 - tmp_q_21;
-                const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t tmp_q_27 = jac_affine_inv_0_0_GRAY*tmp_q_26 - tmp_q_17;
-                const real_t tmp_q_28 = jac_affine_inv_0_1_GRAY*tmp_q_26 - tmp_q_20;
-                const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_q_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_q_29);
-                const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_q_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_q_30);
-                const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_GRAY*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_GRAY*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_GRAY*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_GRAY*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GRAY*tmp_qloop_23 - tmp_qloop_18;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GRAY*tmp_qloop_23 - tmp_qloop_21;
+                const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_GRAY*tmp_qloop_26 - tmp_qloop_17;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GRAY*tmp_qloop_26 - tmp_qloop_20;
+                const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_qloop_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_qloop_29);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_qloop_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -197,12 +197,12 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
              _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
@@ -211,120 +211,120 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_5 + _data_dstEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t src_dof_3 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 src_dof_3 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2;
-                const real_t tmp_q_4 = jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2;
-                const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_BLUE*tmp_q_11;
-                const real_t tmp_q_13 = jac_affine_inv_0_1_BLUE*tmp_q_11;
-                const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                const real_t tmp_q_15 = jac_affine_inv_1_0_BLUE*tmp_q_14;
-                const real_t tmp_q_16 = jac_affine_inv_1_1_BLUE*tmp_q_14;
-                const real_t tmp_q_17 = jac_affine_inv_1_0_BLUE*tmp_q_0;
-                const real_t tmp_q_18 = jac_affine_inv_0_0_BLUE*tmp_q_1;
-                const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                const real_t tmp_q_20 = jac_affine_inv_1_1_BLUE*tmp_q_0;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE*tmp_q_1;
-                const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE*tmp_q_23 - tmp_q_18;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE*tmp_q_23 - tmp_q_21;
-                const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t tmp_q_27 = jac_affine_inv_0_0_BLUE*tmp_q_26 - tmp_q_17;
-                const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE*tmp_q_26 - tmp_q_20;
-                const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_q_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_q_29);
-                const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_q_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_q_30);
-                const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_BLUE*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_BLUE*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_BLUE*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_BLUE*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE*tmp_qloop_23 - tmp_qloop_18;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE*tmp_qloop_23 - tmp_qloop_21;
+                const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_BLUE*tmp_qloop_26 - tmp_qloop_17;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE*tmp_qloop_26 - tmp_qloop_20;
+                const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_qloop_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_qloop_29);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_qloop_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -347,12 +347,12 @@ void P2ElementwiseDivKGrad::apply_macro_2D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5;
              _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_3D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_3D.cpp
index 239dde19bf0650ee29396722e9be4c2b21d90f5b..5d1fef506475a1618ca613c466ef774992c988f1 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_apply_macro_3D.cpp
@@ -56,286 +56,286 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, real_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t * RESTRICT  _data_srcEdge, real_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::apply_macro_3D( walberla::float64 * RESTRICT  _data_dstEdge, walberla::float64 * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 * RESTRICT  _data_srcEdge, walberla::float64 * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -392,16 +392,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -414,287 +414,287 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_9 + _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -751,16 +751,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -773,281 +773,281 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatVec_9 + _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1104,16 +1104,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -1126,284 +1126,284 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_9 + _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1460,16 +1460,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -1482,281 +1482,281 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_9 + _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1813,16 +1813,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -1835,284 +1835,284 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
              _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatVec_9 + _data_dstEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_5 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t src_dof_9 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 src_dof_0 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_srcVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_srcVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_4 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_5 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_6 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 src_dof_7 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 src_dof_8 = _data_srcEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 src_dof_9 = _data_srcEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -2169,16 +2169,16 @@ void P2ElementwiseDivKGrad::apply_macro_3D( real_t * RESTRICT  _data_dstEdge, re
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
-             const real_t elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
-             const real_t elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
-             const real_t elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
-             const real_t elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
-             const real_t elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
-             const real_t elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3 + q_acc_0_4*src_dof_4 + q_acc_0_5*src_dof_5 + q_acc_0_6*src_dof_6 + q_acc_0_7*src_dof_7 + q_acc_0_8*src_dof_8 + q_acc_0_9*src_dof_9;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3 + q_acc_1_4*src_dof_4 + q_acc_1_5*src_dof_5 + q_acc_1_6*src_dof_6 + q_acc_1_7*src_dof_7 + q_acc_1_8*src_dof_8 + q_acc_1_9*src_dof_9;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3 + q_acc_2_4*src_dof_4 + q_acc_2_5*src_dof_5 + q_acc_2_6*src_dof_6 + q_acc_2_7*src_dof_7 + q_acc_2_8*src_dof_8 + q_acc_2_9*src_dof_9;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3 + q_acc_3_4*src_dof_4 + q_acc_3_5*src_dof_5 + q_acc_3_6*src_dof_6 + q_acc_3_7*src_dof_7 + q_acc_3_8*src_dof_8 + q_acc_3_9*src_dof_9;
+             const walberla::float64 elMatVec_4 = q_acc_0_4*src_dof_0 + q_acc_1_4*src_dof_1 + q_acc_2_4*src_dof_2 + q_acc_3_4*src_dof_3 + q_acc_4_4*src_dof_4 + q_acc_4_5*src_dof_5 + q_acc_4_6*src_dof_6 + q_acc_4_7*src_dof_7 + q_acc_4_8*src_dof_8 + q_acc_4_9*src_dof_9;
+             const walberla::float64 elMatVec_5 = q_acc_0_5*src_dof_0 + q_acc_1_5*src_dof_1 + q_acc_2_5*src_dof_2 + q_acc_3_5*src_dof_3 + q_acc_4_5*src_dof_4 + q_acc_5_5*src_dof_5 + q_acc_5_6*src_dof_6 + q_acc_5_7*src_dof_7 + q_acc_5_8*src_dof_8 + q_acc_5_9*src_dof_9;
+             const walberla::float64 elMatVec_6 = q_acc_0_6*src_dof_0 + q_acc_1_6*src_dof_1 + q_acc_2_6*src_dof_2 + q_acc_3_6*src_dof_3 + q_acc_4_6*src_dof_4 + q_acc_5_6*src_dof_5 + q_acc_6_6*src_dof_6 + q_acc_6_7*src_dof_7 + q_acc_6_8*src_dof_8 + q_acc_6_9*src_dof_9;
+             const walberla::float64 elMatVec_7 = q_acc_0_7*src_dof_0 + q_acc_1_7*src_dof_1 + q_acc_2_7*src_dof_2 + q_acc_3_7*src_dof_3 + q_acc_4_7*src_dof_4 + q_acc_5_7*src_dof_5 + q_acc_6_7*src_dof_6 + q_acc_7_7*src_dof_7 + q_acc_7_8*src_dof_8 + q_acc_7_9*src_dof_9;
+             const walberla::float64 elMatVec_8 = q_acc_0_8*src_dof_0 + q_acc_1_8*src_dof_1 + q_acc_2_8*src_dof_2 + q_acc_3_8*src_dof_3 + q_acc_4_8*src_dof_4 + q_acc_5_8*src_dof_5 + q_acc_6_8*src_dof_6 + q_acc_7_8*src_dof_7 + q_acc_8_8*src_dof_8 + q_acc_8_9*src_dof_9;
+             const walberla::float64 elMatVec_9 = q_acc_0_9*src_dof_0 + q_acc_1_9*src_dof_1 + q_acc_2_9*src_dof_2 + q_acc_3_9*src_dof_3 + q_acc_4_9*src_dof_4 + q_acc_5_9*src_dof_5 + q_acc_6_9*src_dof_6 + q_acc_7_9*src_dof_7 + q_acc_8_9*src_dof_8 + q_acc_9_9*src_dof_9;
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
index bd8caecf57387cb912b88cb57dddb43964624e72..1a1be489a774e166760c4b7a7df2511726b80775 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,75 +56,75 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_Edge, real_t * RESTRICT  _data_invDiag_Vertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_Edge, walberla::float64 * RESTRICT  _data_invDiag_Vertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_5 = tmp_q_4*2.0;
-                const real_t tmp_q_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_q_3 + tmp_q_5 + tmp_q_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_5 - _data_q_p_0[q]) + k_dof_2*(tmp_q_7 - _data_q_p_1[q]) + k_dof_3*tmp_q_3 + k_dof_4*(tmp_q_1 - tmp_q_3 + tmp_q_6*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_3 + tmp_q_4*-4.0))*_data_q_w[q];
-                const real_t tmp_q_9 = ((tmp_q_0 - 1.0)*(tmp_q_0 - 1.0));
-                const real_t tmp_q_10 = ((tmp_q_1 - 1.0)*(tmp_q_1 - 1.0));
-                const real_t tmp_q_11 = jac_affine_inv_1_0_GRAY*tmp_q_0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_GRAY*tmp_q_1;
-                const real_t tmp_q_13 = jac_affine_inv_1_1_GRAY*tmp_q_0;
-                const real_t tmp_q_14 = jac_affine_inv_0_1_GRAY*tmp_q_1;
-                const real_t tmp_q_15 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_16 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t q_tmp_0_0 = tmp_q_8*(((jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2)*(jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2)) + ((jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2)*(jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2)));
-                const real_t q_tmp_1_1 = tmp_q_8*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_q_9 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_q_9);
-                const real_t q_tmp_2_2 = tmp_q_8*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_q_10 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_q_10);
-                const real_t q_tmp_3_3 = tmp_q_8*(((tmp_q_11 + tmp_q_12)*(tmp_q_11 + tmp_q_12)) + ((tmp_q_13 + tmp_q_14)*(tmp_q_13 + tmp_q_14)));
-                const real_t q_tmp_4_4 = tmp_q_8*(((jac_affine_inv_1_0_GRAY*tmp_q_15 - tmp_q_12)*(jac_affine_inv_1_0_GRAY*tmp_q_15 - tmp_q_12)) + ((jac_affine_inv_1_1_GRAY*tmp_q_15 - tmp_q_14)*(jac_affine_inv_1_1_GRAY*tmp_q_15 - tmp_q_14)));
-                const real_t q_tmp_5_5 = tmp_q_8*(((jac_affine_inv_0_0_GRAY*tmp_q_16 - tmp_q_11)*(jac_affine_inv_0_0_GRAY*tmp_q_16 - tmp_q_11)) + ((jac_affine_inv_0_1_GRAY*tmp_q_16 - tmp_q_13)*(jac_affine_inv_0_1_GRAY*tmp_q_16 - tmp_q_13)));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_4*2.0;
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_qloop_3 + tmp_qloop_5 + tmp_qloop_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_5 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_7 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_3 + k_dof_4*(tmp_qloop_1 - tmp_qloop_3 + tmp_qloop_6*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_3 + tmp_qloop_4*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_9 = ((tmp_qloop_0 - 1.0)*(tmp_qloop_0 - 1.0));
+                const walberla::float64 tmp_qloop_10 = ((tmp_qloop_1 - 1.0)*(tmp_qloop_1 - 1.0));
+                const walberla::float64 tmp_qloop_11 = jac_affine_inv_1_0_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_1_1_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_14 = jac_affine_inv_0_1_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_15 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_16 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_8*(((jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2)*(jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2)) + ((jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2)*(jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_8*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_qloop_9 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_qloop_9);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_8*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_qloop_10 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_qloop_10);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_8*(((tmp_qloop_11 + tmp_qloop_12)*(tmp_qloop_11 + tmp_qloop_12)) + ((tmp_qloop_13 + tmp_qloop_14)*(tmp_qloop_13 + tmp_qloop_14)));
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_8*(((jac_affine_inv_1_0_GRAY*tmp_qloop_15 - tmp_qloop_12)*(jac_affine_inv_1_0_GRAY*tmp_qloop_15 - tmp_qloop_12)) + ((jac_affine_inv_1_1_GRAY*tmp_qloop_15 - tmp_qloop_14)*(jac_affine_inv_1_1_GRAY*tmp_qloop_15 - tmp_qloop_14)));
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_8*(((jac_affine_inv_0_0_GRAY*tmp_qloop_16 - tmp_qloop_11)*(jac_affine_inv_0_0_GRAY*tmp_qloop_16 - tmp_qloop_11)) + ((jac_affine_inv_0_1_GRAY*tmp_qloop_16 - tmp_qloop_13)*(jac_affine_inv_0_1_GRAY*tmp_qloop_16 - tmp_qloop_13)));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -132,12 +132,12 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 q_acc_4_4 = q_acc_4_4 + q_tmp_4_4;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
              _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
@@ -146,70 +146,70 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_5 + _data_invDiag_Edge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_5 = tmp_q_4*2.0;
-                const real_t tmp_q_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_q_3 + tmp_q_5 + tmp_q_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_5 - _data_q_p_0[q]) + k_dof_2*(tmp_q_7 - _data_q_p_1[q]) + k_dof_3*tmp_q_3 + k_dof_4*(tmp_q_1 - tmp_q_3 + tmp_q_6*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_3 + tmp_q_4*-4.0))*_data_q_w[q];
-                const real_t tmp_q_9 = ((tmp_q_0 - 1.0)*(tmp_q_0 - 1.0));
-                const real_t tmp_q_10 = ((tmp_q_1 - 1.0)*(tmp_q_1 - 1.0));
-                const real_t tmp_q_11 = jac_affine_inv_1_0_BLUE*tmp_q_0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_BLUE*tmp_q_1;
-                const real_t tmp_q_13 = jac_affine_inv_1_1_BLUE*tmp_q_0;
-                const real_t tmp_q_14 = jac_affine_inv_0_1_BLUE*tmp_q_1;
-                const real_t tmp_q_15 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_16 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t q_tmp_0_0 = tmp_q_8*(((jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2)*(jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2)) + ((jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2)*(jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2)));
-                const real_t q_tmp_1_1 = tmp_q_8*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_q_9 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_q_9);
-                const real_t q_tmp_2_2 = tmp_q_8*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_q_10 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_q_10);
-                const real_t q_tmp_3_3 = tmp_q_8*(((tmp_q_11 + tmp_q_12)*(tmp_q_11 + tmp_q_12)) + ((tmp_q_13 + tmp_q_14)*(tmp_q_13 + tmp_q_14)));
-                const real_t q_tmp_4_4 = tmp_q_8*(((jac_affine_inv_1_0_BLUE*tmp_q_15 - tmp_q_12)*(jac_affine_inv_1_0_BLUE*tmp_q_15 - tmp_q_12)) + ((jac_affine_inv_1_1_BLUE*tmp_q_15 - tmp_q_14)*(jac_affine_inv_1_1_BLUE*tmp_q_15 - tmp_q_14)));
-                const real_t q_tmp_5_5 = tmp_q_8*(((jac_affine_inv_0_0_BLUE*tmp_q_16 - tmp_q_11)*(jac_affine_inv_0_0_BLUE*tmp_q_16 - tmp_q_11)) + ((jac_affine_inv_0_1_BLUE*tmp_q_16 - tmp_q_13)*(jac_affine_inv_0_1_BLUE*tmp_q_16 - tmp_q_13)));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_4 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_4*2.0;
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_qloop_3 + tmp_qloop_5 + tmp_qloop_7 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_5 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_7 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_3 + k_dof_4*(tmp_qloop_1 - tmp_qloop_3 + tmp_qloop_6*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_3 + tmp_qloop_4*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_9 = ((tmp_qloop_0 - 1.0)*(tmp_qloop_0 - 1.0));
+                const walberla::float64 tmp_qloop_10 = ((tmp_qloop_1 - 1.0)*(tmp_qloop_1 - 1.0));
+                const walberla::float64 tmp_qloop_11 = jac_affine_inv_1_0_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_1_1_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_14 = jac_affine_inv_0_1_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_15 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_16 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_8*(((jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2)*(jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2)) + ((jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2)*(jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_8*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_qloop_9 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_qloop_9);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_8*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_qloop_10 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_qloop_10);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_8*(((tmp_qloop_11 + tmp_qloop_12)*(tmp_qloop_11 + tmp_qloop_12)) + ((tmp_qloop_13 + tmp_qloop_14)*(tmp_qloop_13 + tmp_qloop_14)));
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_8*(((jac_affine_inv_1_0_BLUE*tmp_qloop_15 - tmp_qloop_12)*(jac_affine_inv_1_0_BLUE*tmp_qloop_15 - tmp_qloop_12)) + ((jac_affine_inv_1_1_BLUE*tmp_qloop_15 - tmp_qloop_14)*(jac_affine_inv_1_1_BLUE*tmp_qloop_15 - tmp_qloop_14)));
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_8*(((jac_affine_inv_0_0_BLUE*tmp_qloop_16 - tmp_qloop_11)*(jac_affine_inv_0_0_BLUE*tmp_qloop_16 - tmp_qloop_11)) + ((jac_affine_inv_0_1_BLUE*tmp_qloop_16 - tmp_qloop_13)*(jac_affine_inv_0_1_BLUE*tmp_qloop_16 - tmp_qloop_13)));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -217,12 +217,12 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_2D( real_
                 q_acc_4_4 = q_acc_4_4 + q_tmp_4_4;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
              _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 8118dcedc2d003798ce11586de28343e28d51a46..20eb99906d24793b4c03dcf17d1858b5c9c9ab63 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,135 +56,135 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_Edge, real_t * RESTRICT  _data_invDiag_Vertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_Edge, walberla::float64 * RESTRICT  _data_invDiag_Vertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4)) + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4)) + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_q_16 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_q_16 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_q_17 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_q_17 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_q_18 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_q_18 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_WHITE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_WHITE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_WHITE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_WHITE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_WHITE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_WHITE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_WHITE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_WHITE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_WHITE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_WHITE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -196,16 +196,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -218,136 +218,136 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatDiag_9 + _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -359,16 +359,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -381,130 +381,130 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1] = elMatDiag_9 + _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4)) + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4)) + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_q_16 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_q_16 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_q_17 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_q_17 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_q_18 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_q_18 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_BLUE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_BLUE_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_BLUE_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_BLUE_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_BLUE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_BLUE_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_BLUE_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_BLUE_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_BLUE_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_BLUE_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -516,16 +516,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -538,133 +538,133 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatDiag_9 + _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -676,16 +676,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -698,130 +698,130 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatDiag_9 + _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4)) + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4)) + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_q_16 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_q_16 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_q_17 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_q_17 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_q_18 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_q_18 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_GREEN_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_GREEN_UP*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_GREEN_UP*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_GREEN_UP*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_GREEN_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_GREEN_UP*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_GREEN_UP*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_GREEN_UP*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4)) + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4)) + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_qloop_16 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_qloop_16 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_qloop_17 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_qloop_17 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_qloop_18 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_qloop_18 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_GREEN_UP*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_GREEN_UP*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -833,16 +833,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -855,133 +855,133 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
              _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))] = elMatDiag_9 + _data_invDiag_Edge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_6 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_7 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_11 = tmp_q_10*2.0;
-                const real_t tmp_q_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_13 = tmp_q_12*2.0;
-                const real_t tmp_q_14 = tmp_q_5 + tmp_q_6;
-                const real_t tmp_q_15 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_q_11 + tmp_q_13 + tmp_q_14 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_9 - _data_q_p_0[q]) + k_dof_2*(tmp_q_11 - _data_q_p_1[q]) + k_dof_3*(tmp_q_13 - _data_q_p_2[q]) + k_dof_4*tmp_q_7 + k_dof_5*tmp_q_6 + k_dof_6*tmp_q_5 + k_dof_7*(tmp_q_0 + tmp_q_12*-4.0 - tmp_q_6 - tmp_q_7) + k_dof_8*(tmp_q_10*-4.0 + tmp_q_2 - tmp_q_5 - tmp_q_7) + k_dof_9*(tmp_q_1 - tmp_q_14 + tmp_q_8*-4.0))*_data_q_w[q];
-                const real_t tmp_q_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_37 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_38 = tmp_q_0 - 4.0;
-                const real_t tmp_q_39 = -tmp_q_1 - tmp_q_38 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_40 = -tmp_q_2 - tmp_q_38 - 8.0*_data_q_p_0[q];
-                const real_t q_tmp_0_0 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4)) + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4)) + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4)));
-                const real_t q_tmp_1_1 = tmp_q_15*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_q_16 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_q_16 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_q_16);
-                const real_t q_tmp_2_2 = tmp_q_15*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_q_17 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_q_17 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_q_17);
-                const real_t q_tmp_3_3 = tmp_q_15*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_q_18 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_q_18 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_q_18);
-                const real_t q_tmp_4_4 = tmp_q_15*(((tmp_q_19 + tmp_q_20)*(tmp_q_19 + tmp_q_20))*16.0 + ((tmp_q_21 + tmp_q_22)*(tmp_q_21 + tmp_q_22))*16.0 + ((tmp_q_23 + tmp_q_24)*(tmp_q_23 + tmp_q_24))*16.0);
-                const real_t q_tmp_5_5 = tmp_q_15*(((tmp_q_25 + tmp_q_26)*(tmp_q_25 + tmp_q_26))*16.0 + ((tmp_q_27 + tmp_q_28)*(tmp_q_27 + tmp_q_28))*16.0 + ((tmp_q_29 + tmp_q_30)*(tmp_q_29 + tmp_q_30))*16.0);
-                const real_t q_tmp_6_6 = tmp_q_15*(((tmp_q_31 + tmp_q_32)*(tmp_q_31 + tmp_q_32))*16.0 + ((tmp_q_33 + tmp_q_34)*(tmp_q_33 + tmp_q_34))*16.0 + ((tmp_q_35 + tmp_q_36)*(tmp_q_35 + tmp_q_36))*16.0);
-                const real_t q_tmp_7_7 = tmp_q_15*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_20 - tmp_q_26))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_22 - tmp_q_28))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_q_37*0.25 - tmp_q_24 - tmp_q_30))*16.0);
-                const real_t q_tmp_8_8 = tmp_q_15*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_19 - tmp_q_32))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_21 - tmp_q_34))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_q_39*0.25 - tmp_q_23 - tmp_q_36))*16.0);
-                const real_t q_tmp_9_9 = tmp_q_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_25 - tmp_q_31))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_27 - tmp_q_33))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_40*0.25 - tmp_q_29 - tmp_q_35))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_10*2.0;
+                const walberla::float64 tmp_qloop_12 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_13 = tmp_qloop_12*2.0;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_5 + tmp_qloop_6;
+                const walberla::float64 tmp_qloop_15 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_qloop_11 + tmp_qloop_13 + tmp_qloop_14 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_9 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_11 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_13 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_7 + k_dof_5*tmp_qloop_6 + k_dof_6*tmp_qloop_5 + k_dof_7*(tmp_qloop_0 + tmp_qloop_12*-4.0 - tmp_qloop_6 - tmp_qloop_7) + k_dof_8*(tmp_qloop_10*-4.0 + tmp_qloop_2 - tmp_qloop_5 - tmp_qloop_7) + k_dof_9*(tmp_qloop_1 - tmp_qloop_14 + tmp_qloop_8*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_16 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_17 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_18 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_19 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_23 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_33 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_36 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_37 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_38 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_39 = -tmp_qloop_1 - tmp_qloop_38 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_40 = -tmp_qloop_2 - tmp_qloop_38 - 8.0*_data_q_p_0[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4)) + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4)));
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_15*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_qloop_16 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_qloop_16);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_15*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_qloop_17 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_qloop_17);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_15*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_qloop_18 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_qloop_18);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_15*(((tmp_qloop_19 + tmp_qloop_20)*(tmp_qloop_19 + tmp_qloop_20))*16.0 + ((tmp_qloop_21 + tmp_qloop_22)*(tmp_qloop_21 + tmp_qloop_22))*16.0 + ((tmp_qloop_23 + tmp_qloop_24)*(tmp_qloop_23 + tmp_qloop_24))*16.0);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_15*(((tmp_qloop_25 + tmp_qloop_26)*(tmp_qloop_25 + tmp_qloop_26))*16.0 + ((tmp_qloop_27 + tmp_qloop_28)*(tmp_qloop_27 + tmp_qloop_28))*16.0 + ((tmp_qloop_29 + tmp_qloop_30)*(tmp_qloop_29 + tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_15*(((tmp_qloop_31 + tmp_qloop_32)*(tmp_qloop_31 + tmp_qloop_32))*16.0 + ((tmp_qloop_33 + tmp_qloop_34)*(tmp_qloop_33 + tmp_qloop_34))*16.0 + ((tmp_qloop_35 + tmp_qloop_36)*(tmp_qloop_35 + tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_15*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_20 - tmp_qloop_26))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_22 - tmp_qloop_28))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_37*0.25 - tmp_qloop_24 - tmp_qloop_30))*16.0);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_15*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_19 - tmp_qloop_32))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_21 - tmp_qloop_34))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_39*0.25 - tmp_qloop_23 - tmp_qloop_36))*16.0);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_15*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_25 - tmp_qloop_31))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_27 - tmp_qloop_33))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_40*0.25 - tmp_qloop_29 - tmp_qloop_35))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
@@ -993,16 +993,16 @@ void P2ElementwiseDivKGrad::computeInverseDiagonalOperatorValues_macro_3D( real_
                 q_acc_8_8 = q_acc_8_8 + q_tmp_8_8;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
-             const real_t elMatDiag_4 = q_acc_4_4;
-             const real_t elMatDiag_5 = q_acc_5_5;
-             const real_t elMatDiag_6 = q_acc_6_6;
-             const real_t elMatDiag_7 = q_acc_7_7;
-             const real_t elMatDiag_8 = q_acc_8_8;
-             const real_t elMatDiag_9 = q_acc_9_9;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_4 = q_acc_4_4;
+             const walberla::float64 elMatDiag_5 = q_acc_5_5;
+             const walberla::float64 elMatDiag_6 = q_acc_6_6;
+             const walberla::float64 elMatDiag_7 = q_acc_7_7;
+             const walberla::float64 elMatDiag_8 = q_acc_8_8;
+             const walberla::float64 elMatDiag_9 = q_acc_9_9;
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_Vertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_Vertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp
index d8ebd004026501814c5e6353a5f7aa08201f1518..212b5d86c518477164e60ea962bc38225b85d3d4 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp
@@ -56,119 +56,119 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge, idx_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, idx_t * RESTRICT  _data_srcEdge, idx_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge, idx_t * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, idx_t * RESTRICT  _data_srcEdge, idx_t * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t _data_q_p_0 [] = {0.16666666666666674, 0.66666666666666674, 0.16666666666666663};
+       const walberla::float64 _data_q_p_0 [] = {0.16666666666666666, 0.66666666666666663, 0.16666666666666666};
    
-       const real_t _data_q_p_1 [] = {0.16666666666666663, 0.16666666666666663, 0.66666666666666685};
+       const walberla::float64 _data_q_p_1 [] = {0.66666666666666663, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t tmp_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
-       const real_t tmp_2_GRAY = 1.0 / (tmp_1_GRAY);
-       const real_t jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_2_GRAY;
-       const real_t jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_2_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(tmp_1_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 tmp_coords_jac_1_GRAY = jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY;
+       const walberla::float64 tmp_coords_jac_2_GRAY = 1.0 / (tmp_coords_jac_1_GRAY);
+       const walberla::float64 jac_affine_inv_0_0_GRAY = jac_affine_1_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_0_1_GRAY = -jac_affine_0_1_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_0_GRAY = -jac_affine_1_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 jac_affine_inv_1_1_GRAY = jac_affine_0_0_GRAY*tmp_coords_jac_2_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(tmp_coords_jac_1_GRAY);
        {
           /* FaceType.GRAY */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = jac_affine_inv_0_0_GRAY*tmp_q_2 + jac_affine_inv_1_0_GRAY*tmp_q_2;
-                const real_t tmp_q_4 = jac_affine_inv_0_1_GRAY*tmp_q_2 + jac_affine_inv_1_1_GRAY*tmp_q_2;
-                const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_GRAY*tmp_q_11;
-                const real_t tmp_q_13 = jac_affine_inv_0_1_GRAY*tmp_q_11;
-                const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                const real_t tmp_q_15 = jac_affine_inv_1_0_GRAY*tmp_q_14;
-                const real_t tmp_q_16 = jac_affine_inv_1_1_GRAY*tmp_q_14;
-                const real_t tmp_q_17 = jac_affine_inv_1_0_GRAY*tmp_q_0;
-                const real_t tmp_q_18 = jac_affine_inv_0_0_GRAY*tmp_q_1;
-                const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                const real_t tmp_q_20 = jac_affine_inv_1_1_GRAY*tmp_q_0;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GRAY*tmp_q_1;
-                const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GRAY*tmp_q_23 - tmp_q_18;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GRAY*tmp_q_23 - tmp_q_21;
-                const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t tmp_q_27 = jac_affine_inv_0_0_GRAY*tmp_q_26 - tmp_q_17;
-                const real_t tmp_q_28 = jac_affine_inv_0_1_GRAY*tmp_q_26 - tmp_q_20;
-                const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_q_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_q_29);
-                const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_q_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_q_30);
-                const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_GRAY*tmp_qloop_2 + jac_affine_inv_1_0_GRAY*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_GRAY*tmp_qloop_2 + jac_affine_inv_1_1_GRAY*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_GRAY*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_GRAY*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_GRAY*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_GRAY*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_GRAY*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_GRAY*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GRAY*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GRAY*tmp_qloop_23 - tmp_qloop_18;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GRAY*tmp_qloop_23 - tmp_qloop_21;
+                const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_GRAY*tmp_qloop_26 - tmp_qloop_17;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_GRAY*tmp_qloop_26 - tmp_qloop_20;
+                const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_GRAY*jac_affine_inv_0_0_GRAY)*tmp_qloop_29 + (jac_affine_inv_0_1_GRAY*jac_affine_inv_0_1_GRAY)*tmp_qloop_29);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_GRAY*jac_affine_inv_1_0_GRAY)*tmp_qloop_30 + (jac_affine_inv_1_1_GRAY*jac_affine_inv_1_1_GRAY)*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -191,46 +191,46 @@ void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
@@ -249,155 +249,155 @@ void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_1_0));
-             _data_mat[7] = ((real_t)(elMat_1_1));
-             _data_mat[8] = ((real_t)(elMat_1_2));
-             _data_mat[9] = ((real_t)(elMat_1_3));
-             _data_mat[10] = ((real_t)(elMat_1_4));
-             _data_mat[11] = ((real_t)(elMat_1_5));
-             _data_mat[12] = ((real_t)(elMat_2_0));
-             _data_mat[13] = ((real_t)(elMat_2_1));
-             _data_mat[14] = ((real_t)(elMat_2_2));
-             _data_mat[15] = ((real_t)(elMat_2_3));
-             _data_mat[16] = ((real_t)(elMat_2_4));
-             _data_mat[17] = ((real_t)(elMat_2_5));
-             _data_mat[18] = ((real_t)(elMat_3_0));
-             _data_mat[19] = ((real_t)(elMat_3_1));
-             _data_mat[20] = ((real_t)(elMat_3_2));
-             _data_mat[21] = ((real_t)(elMat_3_3));
-             _data_mat[22] = ((real_t)(elMat_3_4));
-             _data_mat[23] = ((real_t)(elMat_3_5));
-             _data_mat[24] = ((real_t)(elMat_4_0));
-             _data_mat[25] = ((real_t)(elMat_4_1));
-             _data_mat[26] = ((real_t)(elMat_4_2));
-             _data_mat[27] = ((real_t)(elMat_4_3));
-             _data_mat[28] = ((real_t)(elMat_4_4));
-             _data_mat[29] = ((real_t)(elMat_4_5));
-             _data_mat[30] = ((real_t)(elMat_5_0));
-             _data_mat[31] = ((real_t)(elMat_5_1));
-             _data_mat[32] = ((real_t)(elMat_5_2));
-             _data_mat[33] = ((real_t)(elMat_5_3));
-             _data_mat[34] = ((real_t)(elMat_5_4));
-             _data_mat[35] = ((real_t)(elMat_5_5));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_1_0));
+             _data_mat[7] = ((walberla::float64)(elMat_1_1));
+             _data_mat[8] = ((walberla::float64)(elMat_1_2));
+             _data_mat[9] = ((walberla::float64)(elMat_1_3));
+             _data_mat[10] = ((walberla::float64)(elMat_1_4));
+             _data_mat[11] = ((walberla::float64)(elMat_1_5));
+             _data_mat[12] = ((walberla::float64)(elMat_2_0));
+             _data_mat[13] = ((walberla::float64)(elMat_2_1));
+             _data_mat[14] = ((walberla::float64)(elMat_2_2));
+             _data_mat[15] = ((walberla::float64)(elMat_2_3));
+             _data_mat[16] = ((walberla::float64)(elMat_2_4));
+             _data_mat[17] = ((walberla::float64)(elMat_2_5));
+             _data_mat[18] = ((walberla::float64)(elMat_3_0));
+             _data_mat[19] = ((walberla::float64)(elMat_3_1));
+             _data_mat[20] = ((walberla::float64)(elMat_3_2));
+             _data_mat[21] = ((walberla::float64)(elMat_3_3));
+             _data_mat[22] = ((walberla::float64)(elMat_3_4));
+             _data_mat[23] = ((walberla::float64)(elMat_3_5));
+             _data_mat[24] = ((walberla::float64)(elMat_4_0));
+             _data_mat[25] = ((walberla::float64)(elMat_4_1));
+             _data_mat[26] = ((walberla::float64)(elMat_4_2));
+             _data_mat[27] = ((walberla::float64)(elMat_4_3));
+             _data_mat[28] = ((walberla::float64)(elMat_4_4));
+             _data_mat[29] = ((walberla::float64)(elMat_4_5));
+             _data_mat[30] = ((walberla::float64)(elMat_5_0));
+             _data_mat[31] = ((walberla::float64)(elMat_5_1));
+             _data_mat[32] = ((walberla::float64)(elMat_5_2));
+             _data_mat[33] = ((walberla::float64)(elMat_5_3));
+             _data_mat[34] = ((walberla::float64)(elMat_5_4));
+             _data_mat[35] = ((walberla::float64)(elMat_5_5));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t tmp_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
-       const real_t tmp_6_BLUE = 1.0 / (tmp_5_BLUE);
-       const real_t jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_6_BLUE;
-       const real_t jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_6_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(tmp_5_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 tmp_coords_jac_5_BLUE = jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE;
+       const walberla::float64 tmp_coords_jac_6_BLUE = 1.0 / (tmp_coords_jac_5_BLUE);
+       const walberla::float64 jac_affine_inv_0_0_BLUE = jac_affine_1_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_0_1_BLUE = -jac_affine_0_1_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_0_BLUE = -jac_affine_1_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 jac_affine_inv_1_1_BLUE = jac_affine_0_0_BLUE*tmp_coords_jac_6_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(tmp_coords_jac_5_BLUE);
        {
           /* FaceType.BLUE */
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             const real_t k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_5_5 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             const walberla::float64 k_dof_3 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_2 = tmp_q_0 + tmp_q_1 - 3.0;
-                const real_t tmp_q_3 = jac_affine_inv_0_0_BLUE*tmp_q_2 + jac_affine_inv_1_0_BLUE*tmp_q_2;
-                const real_t tmp_q_4 = jac_affine_inv_0_1_BLUE*tmp_q_2 + jac_affine_inv_1_1_BLUE*tmp_q_2;
-                const real_t tmp_q_5 = tmp_q_0*_data_q_p_1[q];
-                const real_t tmp_q_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_7 = tmp_q_6*2.0;
-                const real_t tmp_q_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_9 = tmp_q_8*2.0;
-                const real_t tmp_q_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_q_5 + tmp_q_7 + tmp_q_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_q_7 - _data_q_p_0[q]) + k_dof_2*(tmp_q_9 - _data_q_p_1[q]) + k_dof_3*tmp_q_5 + k_dof_4*(tmp_q_1 - tmp_q_5 + tmp_q_8*-4.0) + k_dof_5*(tmp_q_0 - tmp_q_5 + tmp_q_6*-4.0))*_data_q_w[q];
-                const real_t tmp_q_11 = tmp_q_0 - 1.0;
-                const real_t tmp_q_12 = jac_affine_inv_0_0_BLUE*tmp_q_11;
-                const real_t tmp_q_13 = jac_affine_inv_0_1_BLUE*tmp_q_11;
-                const real_t tmp_q_14 = tmp_q_1 - 1.0;
-                const real_t tmp_q_15 = jac_affine_inv_1_0_BLUE*tmp_q_14;
-                const real_t tmp_q_16 = jac_affine_inv_1_1_BLUE*tmp_q_14;
-                const real_t tmp_q_17 = jac_affine_inv_1_0_BLUE*tmp_q_0;
-                const real_t tmp_q_18 = jac_affine_inv_0_0_BLUE*tmp_q_1;
-                const real_t tmp_q_19 = tmp_q_17 + tmp_q_18;
-                const real_t tmp_q_20 = jac_affine_inv_1_1_BLUE*tmp_q_0;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE*tmp_q_1;
-                const real_t tmp_q_22 = tmp_q_20 + tmp_q_21;
-                const real_t tmp_q_23 = -tmp_q_0 - 8.0*_data_q_p_1[q] + 4.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE*tmp_q_23 - tmp_q_18;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE*tmp_q_23 - tmp_q_21;
-                const real_t tmp_q_26 = -tmp_q_1 - 8.0*_data_q_p_0[q] + 4.0;
-                const real_t tmp_q_27 = jac_affine_inv_0_0_BLUE*tmp_q_26 - tmp_q_17;
-                const real_t tmp_q_28 = jac_affine_inv_0_1_BLUE*tmp_q_26 - tmp_q_20;
-                const real_t tmp_q_29 = (tmp_q_11*tmp_q_11);
-                const real_t tmp_q_30 = (tmp_q_14*tmp_q_14);
-                const real_t q_tmp_0_0 = tmp_q_10*((tmp_q_3*tmp_q_3) + (tmp_q_4*tmp_q_4));
-                const real_t q_tmp_0_1 = tmp_q_10*(tmp_q_12*tmp_q_3 + tmp_q_13*tmp_q_4);
-                const real_t q_tmp_0_2 = tmp_q_10*(tmp_q_15*tmp_q_3 + tmp_q_16*tmp_q_4);
-                const real_t q_tmp_0_3 = tmp_q_10*(tmp_q_19*tmp_q_3 + tmp_q_22*tmp_q_4);
-                const real_t q_tmp_0_4 = tmp_q_10*(tmp_q_24*tmp_q_3 + tmp_q_25*tmp_q_4);
-                const real_t q_tmp_0_5 = tmp_q_10*(tmp_q_27*tmp_q_3 + tmp_q_28*tmp_q_4);
-                const real_t q_tmp_1_1 = tmp_q_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_q_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_q_29);
-                const real_t q_tmp_1_2 = tmp_q_10*(tmp_q_12*tmp_q_15 + tmp_q_13*tmp_q_16);
-                const real_t q_tmp_1_3 = tmp_q_10*(tmp_q_12*tmp_q_19 + tmp_q_13*tmp_q_22);
-                const real_t q_tmp_1_4 = tmp_q_10*(tmp_q_12*tmp_q_24 + tmp_q_13*tmp_q_25);
-                const real_t q_tmp_1_5 = tmp_q_10*(tmp_q_12*tmp_q_27 + tmp_q_13*tmp_q_28);
-                const real_t q_tmp_2_2 = tmp_q_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_q_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_q_30);
-                const real_t q_tmp_2_3 = tmp_q_10*(tmp_q_15*tmp_q_19 + tmp_q_16*tmp_q_22);
-                const real_t q_tmp_2_4 = tmp_q_10*(tmp_q_15*tmp_q_24 + tmp_q_16*tmp_q_25);
-                const real_t q_tmp_2_5 = tmp_q_10*(tmp_q_15*tmp_q_27 + tmp_q_16*tmp_q_28);
-                const real_t q_tmp_3_3 = tmp_q_10*((tmp_q_19*tmp_q_19) + (tmp_q_22*tmp_q_22));
-                const real_t q_tmp_3_4 = tmp_q_10*(tmp_q_19*tmp_q_24 + tmp_q_22*tmp_q_25);
-                const real_t q_tmp_3_5 = tmp_q_10*(tmp_q_19*tmp_q_27 + tmp_q_22*tmp_q_28);
-                const real_t q_tmp_4_4 = tmp_q_10*((tmp_q_24*tmp_q_24) + (tmp_q_25*tmp_q_25));
-                const real_t q_tmp_4_5 = tmp_q_10*(tmp_q_24*tmp_q_27 + tmp_q_25*tmp_q_28);
-                const real_t q_tmp_5_5 = tmp_q_10*((tmp_q_27*tmp_q_27) + (tmp_q_28*tmp_q_28));
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_2 = tmp_qloop_0 + tmp_qloop_1 - 3.0;
+                const walberla::float64 tmp_qloop_3 = jac_affine_inv_0_0_BLUE*tmp_qloop_2 + jac_affine_inv_1_0_BLUE*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = jac_affine_inv_0_1_BLUE*tmp_qloop_2 + jac_affine_inv_1_1_BLUE*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_5 = tmp_qloop_0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_6 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_7 = tmp_qloop_6*2.0;
+                const walberla::float64 tmp_qloop_8 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_8*2.0;
+                const walberla::float64 tmp_qloop_10 = abs_det_jac_affine_BLUE*(k_dof_0*(tmp_qloop_5 + tmp_qloop_7 + tmp_qloop_9 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] + 1.0) + k_dof_1*(tmp_qloop_7 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_9 - _data_q_p_1[q]) + k_dof_3*tmp_qloop_5 + k_dof_4*(tmp_qloop_1 - tmp_qloop_5 + tmp_qloop_8*-4.0) + k_dof_5*(tmp_qloop_0 - tmp_qloop_5 + tmp_qloop_6*-4.0))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_11 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_12 = jac_affine_inv_0_0_BLUE*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_13 = jac_affine_inv_0_1_BLUE*tmp_qloop_11;
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_15 = jac_affine_inv_1_0_BLUE*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_16 = jac_affine_inv_1_1_BLUE*tmp_qloop_14;
+                const walberla::float64 tmp_qloop_17 = jac_affine_inv_1_0_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_18 = jac_affine_inv_0_0_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_17 + tmp_qloop_18;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_1_1_BLUE*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_22 = tmp_qloop_20 + tmp_qloop_21;
+                const walberla::float64 tmp_qloop_23 = -tmp_qloop_0 - 8.0*_data_q_p_1[q] + 4.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE*tmp_qloop_23 - tmp_qloop_18;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE*tmp_qloop_23 - tmp_qloop_21;
+                const walberla::float64 tmp_qloop_26 = -tmp_qloop_1 - 8.0*_data_q_p_0[q] + 4.0;
+                const walberla::float64 tmp_qloop_27 = jac_affine_inv_0_0_BLUE*tmp_qloop_26 - tmp_qloop_17;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_0_1_BLUE*tmp_qloop_26 - tmp_qloop_20;
+                const walberla::float64 tmp_qloop_29 = (tmp_qloop_11*tmp_qloop_11);
+                const walberla::float64 tmp_qloop_30 = (tmp_qloop_14*tmp_qloop_14);
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_10*((tmp_qloop_3*tmp_qloop_3) + (tmp_qloop_4*tmp_qloop_4));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_3 + tmp_qloop_13*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_3 + tmp_qloop_16*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_3 + tmp_qloop_22*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_3 + tmp_qloop_25*tmp_qloop_4);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_10*(tmp_qloop_27*tmp_qloop_3 + tmp_qloop_28*tmp_qloop_4);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_10*((jac_affine_inv_0_0_BLUE*jac_affine_inv_0_0_BLUE)*tmp_qloop_29 + (jac_affine_inv_0_1_BLUE*jac_affine_inv_0_1_BLUE)*tmp_qloop_29);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_16);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_19 + tmp_qloop_13*tmp_qloop_22);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_24 + tmp_qloop_13*tmp_qloop_25);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_10*(tmp_qloop_12*tmp_qloop_27 + tmp_qloop_13*tmp_qloop_28);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_10*((jac_affine_inv_1_0_BLUE*jac_affine_inv_1_0_BLUE)*tmp_qloop_30 + (jac_affine_inv_1_1_BLUE*jac_affine_inv_1_1_BLUE)*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_19 + tmp_qloop_16*tmp_qloop_22);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_24 + tmp_qloop_16*tmp_qloop_25);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_10*(tmp_qloop_15*tmp_qloop_27 + tmp_qloop_16*tmp_qloop_28);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_10*((tmp_qloop_19*tmp_qloop_19) + (tmp_qloop_22*tmp_qloop_22));
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_24 + tmp_qloop_22*tmp_qloop_25);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_10*(tmp_qloop_19*tmp_qloop_27 + tmp_qloop_22*tmp_qloop_28);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_10*((tmp_qloop_24*tmp_qloop_24) + (tmp_qloop_25*tmp_qloop_25));
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_10*(tmp_qloop_24*tmp_qloop_27 + tmp_qloop_25*tmp_qloop_28);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_10*((tmp_qloop_27*tmp_qloop_27) + (tmp_qloop_28*tmp_qloop_28));
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -420,46 +420,46 @@ void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_4_5 = q_acc_4_5 + q_tmp_4_5;
                 q_acc_5_5 = q_acc_5_5 + q_tmp_5_5;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
          
              std::vector< uint_t > _data_rowIdx( 6 );
              std::vector< uint_t > _data_colIdx( 6 );
-             std::vector< real_t > _data_mat( 36 );
+             std::vector< walberla::float64 > _data_mat( 36 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]));
@@ -478,42 +478,42 @@ void P2ElementwiseDivKGrad::toMatrix_macro_2D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_1_0));
-             _data_mat[7] = ((real_t)(elMat_1_1));
-             _data_mat[8] = ((real_t)(elMat_1_2));
-             _data_mat[9] = ((real_t)(elMat_1_3));
-             _data_mat[10] = ((real_t)(elMat_1_4));
-             _data_mat[11] = ((real_t)(elMat_1_5));
-             _data_mat[12] = ((real_t)(elMat_2_0));
-             _data_mat[13] = ((real_t)(elMat_2_1));
-             _data_mat[14] = ((real_t)(elMat_2_2));
-             _data_mat[15] = ((real_t)(elMat_2_3));
-             _data_mat[16] = ((real_t)(elMat_2_4));
-             _data_mat[17] = ((real_t)(elMat_2_5));
-             _data_mat[18] = ((real_t)(elMat_3_0));
-             _data_mat[19] = ((real_t)(elMat_3_1));
-             _data_mat[20] = ((real_t)(elMat_3_2));
-             _data_mat[21] = ((real_t)(elMat_3_3));
-             _data_mat[22] = ((real_t)(elMat_3_4));
-             _data_mat[23] = ((real_t)(elMat_3_5));
-             _data_mat[24] = ((real_t)(elMat_4_0));
-             _data_mat[25] = ((real_t)(elMat_4_1));
-             _data_mat[26] = ((real_t)(elMat_4_2));
-             _data_mat[27] = ((real_t)(elMat_4_3));
-             _data_mat[28] = ((real_t)(elMat_4_4));
-             _data_mat[29] = ((real_t)(elMat_4_5));
-             _data_mat[30] = ((real_t)(elMat_5_0));
-             _data_mat[31] = ((real_t)(elMat_5_1));
-             _data_mat[32] = ((real_t)(elMat_5_2));
-             _data_mat[33] = ((real_t)(elMat_5_3));
-             _data_mat[34] = ((real_t)(elMat_5_4));
-             _data_mat[35] = ((real_t)(elMat_5_5));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_1_0));
+             _data_mat[7] = ((walberla::float64)(elMat_1_1));
+             _data_mat[8] = ((walberla::float64)(elMat_1_2));
+             _data_mat[9] = ((walberla::float64)(elMat_1_3));
+             _data_mat[10] = ((walberla::float64)(elMat_1_4));
+             _data_mat[11] = ((walberla::float64)(elMat_1_5));
+             _data_mat[12] = ((walberla::float64)(elMat_2_0));
+             _data_mat[13] = ((walberla::float64)(elMat_2_1));
+             _data_mat[14] = ((walberla::float64)(elMat_2_2));
+             _data_mat[15] = ((walberla::float64)(elMat_2_3));
+             _data_mat[16] = ((walberla::float64)(elMat_2_4));
+             _data_mat[17] = ((walberla::float64)(elMat_2_5));
+             _data_mat[18] = ((walberla::float64)(elMat_3_0));
+             _data_mat[19] = ((walberla::float64)(elMat_3_1));
+             _data_mat[20] = ((walberla::float64)(elMat_3_2));
+             _data_mat[21] = ((walberla::float64)(elMat_3_3));
+             _data_mat[22] = ((walberla::float64)(elMat_3_4));
+             _data_mat[23] = ((walberla::float64)(elMat_3_5));
+             _data_mat[24] = ((walberla::float64)(elMat_4_0));
+             _data_mat[25] = ((walberla::float64)(elMat_4_1));
+             _data_mat[26] = ((walberla::float64)(elMat_4_2));
+             _data_mat[27] = ((walberla::float64)(elMat_4_3));
+             _data_mat[28] = ((walberla::float64)(elMat_4_4));
+             _data_mat[29] = ((walberla::float64)(elMat_4_5));
+             _data_mat[30] = ((walberla::float64)(elMat_5_0));
+             _data_mat[31] = ((walberla::float64)(elMat_5_1));
+             _data_mat[32] = ((walberla::float64)(elMat_5_2));
+             _data_mat[33] = ((walberla::float64)(elMat_5_3));
+             _data_mat[34] = ((walberla::float64)(elMat_5_4));
+             _data_mat[35] = ((walberla::float64)(elMat_5_5));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp
index 884e8dd9f13a55f4f7f471c33066d4b8b1f68031..8de2f7b3bd79c1822c2e7dc2bda83c5dc8d33ce7 100644
--- a/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp
+++ b/operators/div_k_grad/noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp
@@ -56,276 +56,276 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge, idx_t * RESTRICT  _data_dstVertex, real_t * RESTRICT  _data_kEdge, real_t * RESTRICT  _data_kVertex, idx_t * RESTRICT  _data_srcEdge, idx_t * RESTRICT  _data_srcVertex, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge, idx_t * RESTRICT  _data_dstVertex, walberla::float64 * RESTRICT  _data_kEdge, walberla::float64 * RESTRICT  _data_kVertex, idx_t * RESTRICT  _data_srcEdge, idx_t * RESTRICT  _data_srcVertex, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t _data_q_p_0 [] = {0.18002969351036546, 0.15593312049918584, 0.21607642918484793, 0.82157254096761967};
+       const walberla::float64 _data_q_p_0 [] = {0.1381966011250105, 0.1381966011250105, 0.5854101966249684, 0.1381966011250105};
    
-       const real_t _data_q_p_1 [] = {0.36531451881463461, 0.45746158708559559, 0.00037551502872928966, 0.12366680032845823};
+       const walberla::float64 _data_q_p_1 [] = {0.1381966011250105, 0.5854101966249684, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t _data_q_p_2 [] = {0.0069232355736274509, 0.3817653560693467, 0.43070170707783589, 0.039933048641498381};
+       const walberla::float64 _data_q_p_2 [] = {0.5854101966249684, 0.1381966011250105, 0.1381966011250105, 0.1381966011250105};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t tmp_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t tmp_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t tmp_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t tmp_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
-       const real_t tmp_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_5_WHITE_UP;
-       const real_t tmp_7_WHITE_UP = 1.0 / (tmp_6_WHITE_UP);
-       const real_t jac_affine_inv_0_0_WHITE_UP = tmp_7_WHITE_UP*(tmp_1_WHITE_UP - tmp_2_WHITE_UP);
-       const real_t jac_affine_inv_0_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_4_WHITE_UP);
-       const real_t jac_affine_inv_0_2_WHITE_UP = tmp_7_WHITE_UP*(tmp_3_WHITE_UP - tmp_5_WHITE_UP);
-       const real_t jac_affine_inv_1_0_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_1_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_1_2_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t jac_affine_inv_2_0_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_1_WHITE_UP = tmp_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
-       const real_t jac_affine_inv_2_2_WHITE_UP = tmp_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
-       const real_t abs_det_jac_affine_WHITE_UP = abs(tmp_6_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_5_WHITE_UP = jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_3_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_2_WHITE_UP = jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_1_WHITE_UP = jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_4_WHITE_UP = jac_affine_0_1_WHITE_UP*jac_affine_2_2_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_6_WHITE_UP = jac_affine_0_0_WHITE_UP*tmp_coords_jac_1_WHITE_UP - jac_affine_0_0_WHITE_UP*tmp_coords_jac_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_0_WHITE_UP*tmp_coords_jac_4_WHITE_UP + jac_affine_2_0_WHITE_UP*tmp_coords_jac_3_WHITE_UP - jac_affine_2_0_WHITE_UP*tmp_coords_jac_5_WHITE_UP;
+       const walberla::float64 tmp_coords_jac_7_WHITE_UP = 1.0 / (tmp_coords_jac_6_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_1_WHITE_UP - tmp_coords_jac_2_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_2_WHITE_UP*jac_affine_2_1_WHITE_UP - tmp_coords_jac_4_WHITE_UP);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(tmp_coords_jac_3_WHITE_UP - tmp_coords_jac_5_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(-jac_affine_0_0_WHITE_UP*jac_affine_2_1_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_UP = tmp_coords_jac_7_WHITE_UP*(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP);
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(tmp_coords_jac_6_WHITE_UP);
        {
           /* CellType.WHITE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_UP*tmp_q_4 + jac_affine_inv_1_0_WHITE_UP*tmp_q_4 + jac_affine_inv_2_0_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_UP*tmp_q_4 + jac_affine_inv_1_1_WHITE_UP*tmp_q_4 + jac_affine_inv_2_1_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_UP*tmp_q_4 + jac_affine_inv_1_2_WHITE_UP*tmp_q_4 + jac_affine_inv_2_2_WHITE_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_UP*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_UP*jac_affine_inv_0_0_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_UP*jac_affine_inv_0_1_WHITE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_UP*jac_affine_inv_0_2_WHITE_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_UP*jac_affine_inv_1_0_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_UP*jac_affine_inv_1_1_WHITE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_UP*jac_affine_inv_1_2_WHITE_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_UP*jac_affine_inv_2_0_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_UP*jac_affine_inv_2_1_WHITE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_UP*jac_affine_inv_2_2_WHITE_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -382,110 +382,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -512,382 +512,382 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t tmp_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t tmp_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t tmp_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t tmp_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
-       const real_t tmp_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_17_WHITE_DOWN;
-       const real_t tmp_19_WHITE_DOWN = 1.0 / (tmp_18_WHITE_DOWN);
-       const real_t jac_affine_inv_0_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_13_WHITE_DOWN - tmp_14_WHITE_DOWN);
-       const real_t jac_affine_inv_0_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_16_WHITE_DOWN);
-       const real_t jac_affine_inv_0_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(tmp_15_WHITE_DOWN - tmp_17_WHITE_DOWN);
-       const real_t jac_affine_inv_1_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_1_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_0_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_1_WHITE_DOWN = tmp_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
-       const real_t jac_affine_inv_2_2_WHITE_DOWN = tmp_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(tmp_18_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_17_WHITE_DOWN = jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_WHITE_DOWN = jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_WHITE_DOWN = jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_WHITE_DOWN = jac_affine_0_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_18_WHITE_DOWN = jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_13_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*tmp_coords_jac_14_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_0_WHITE_DOWN*tmp_coords_jac_16_WHITE_DOWN + jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_15_WHITE_DOWN - jac_affine_2_0_WHITE_DOWN*tmp_coords_jac_17_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_19_WHITE_DOWN = 1.0 / (tmp_coords_jac_18_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_13_WHITE_DOWN - tmp_coords_jac_14_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - tmp_coords_jac_16_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(tmp_coords_jac_15_WHITE_DOWN - tmp_coords_jac_17_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(-jac_affine_0_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_WHITE_DOWN = tmp_coords_jac_19_WHITE_DOWN*(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN);
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(tmp_coords_jac_18_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6)) + 1];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_q_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_WHITE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_WHITE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_WHITE_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_WHITE_DOWN*jac_affine_inv_0_0_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_WHITE_DOWN*jac_affine_inv_0_1_WHITE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_WHITE_DOWN*jac_affine_inv_0_2_WHITE_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_WHITE_DOWN*jac_affine_inv_1_0_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_WHITE_DOWN*jac_affine_inv_1_1_WHITE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_WHITE_DOWN*jac_affine_inv_1_2_WHITE_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_WHITE_DOWN*jac_affine_inv_2_0_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_WHITE_DOWN*jac_affine_inv_2_1_WHITE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_WHITE_DOWN*jac_affine_inv_2_2_WHITE_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_WHITE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_WHITE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_WHITE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -944,110 +944,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -1074,376 +1074,376 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t tmp_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t tmp_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t tmp_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t tmp_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
-       const real_t tmp_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_9_BLUE_UP;
-       const real_t tmp_13_BLUE_UP = 1.0 / (tmp_12_BLUE_UP);
-       const real_t jac_affine_inv_0_0_BLUE_UP = tmp_13_BLUE_UP*(tmp_7_BLUE_UP - tmp_8_BLUE_UP);
-       const real_t jac_affine_inv_0_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_10_BLUE_UP);
-       const real_t jac_affine_inv_0_2_BLUE_UP = tmp_13_BLUE_UP*(-tmp_11_BLUE_UP + tmp_9_BLUE_UP);
-       const real_t jac_affine_inv_1_0_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_1_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_1_2_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t jac_affine_inv_2_0_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_1_BLUE_UP = tmp_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
-       const real_t jac_affine_inv_2_2_BLUE_UP = tmp_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
-       const real_t abs_det_jac_affine_BLUE_UP = abs(tmp_12_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_11_BLUE_UP = jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_9_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_8_BLUE_UP = jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_7_BLUE_UP = jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_10_BLUE_UP = jac_affine_0_1_BLUE_UP*jac_affine_2_2_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_12_BLUE_UP = jac_affine_0_0_BLUE_UP*tmp_coords_jac_7_BLUE_UP - jac_affine_0_0_BLUE_UP*tmp_coords_jac_8_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_0_BLUE_UP*tmp_coords_jac_10_BLUE_UP - jac_affine_2_0_BLUE_UP*tmp_coords_jac_11_BLUE_UP + jac_affine_2_0_BLUE_UP*tmp_coords_jac_9_BLUE_UP;
+       const walberla::float64 tmp_coords_jac_13_BLUE_UP = 1.0 / (tmp_coords_jac_12_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(tmp_coords_jac_7_BLUE_UP - tmp_coords_jac_8_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_2_BLUE_UP*jac_affine_2_1_BLUE_UP - tmp_coords_jac_10_BLUE_UP);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-tmp_coords_jac_11_BLUE_UP + tmp_coords_jac_9_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(-jac_affine_0_0_BLUE_UP*jac_affine_2_1_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_UP = tmp_coords_jac_13_BLUE_UP*(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP);
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(tmp_coords_jac_12_BLUE_UP);
        {
           /* CellType.BLUE_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_UP*tmp_q_4 + jac_affine_inv_1_0_BLUE_UP*tmp_q_4 + jac_affine_inv_2_0_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_UP*tmp_q_4 + jac_affine_inv_1_1_BLUE_UP*tmp_q_4 + jac_affine_inv_2_1_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_UP*tmp_q_4 + jac_affine_inv_1_2_BLUE_UP*tmp_q_4 + jac_affine_inv_2_2_BLUE_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_UP*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_UP*jac_affine_inv_0_0_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_UP*jac_affine_inv_0_1_BLUE_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_UP*jac_affine_inv_0_2_BLUE_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_UP*jac_affine_inv_1_0_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_UP*jac_affine_inv_1_1_BLUE_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_UP*jac_affine_inv_1_2_BLUE_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_UP*jac_affine_inv_2_0_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_UP*jac_affine_inv_2_1_BLUE_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_UP*jac_affine_inv_2_2_BLUE_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -1500,110 +1500,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -1630,379 +1630,379 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t tmp_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t tmp_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t tmp_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t tmp_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
-       const real_t tmp_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_14_BLUE_DOWN;
-       const real_t tmp_16_BLUE_DOWN = 1.0 / (tmp_15_BLUE_DOWN);
-       const real_t jac_affine_inv_0_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_10_BLUE_DOWN - tmp_11_BLUE_DOWN);
-       const real_t jac_affine_inv_0_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_13_BLUE_DOWN);
-       const real_t jac_affine_inv_0_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(tmp_12_BLUE_DOWN - tmp_14_BLUE_DOWN);
-       const real_t jac_affine_inv_1_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_1_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_0_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_1_BLUE_DOWN = tmp_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
-       const real_t jac_affine_inv_2_2_BLUE_DOWN = tmp_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(tmp_15_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_14_BLUE_DOWN = jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_12_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_11_BLUE_DOWN = jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_BLUE_DOWN = jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_13_BLUE_DOWN = jac_affine_0_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_15_BLUE_DOWN = jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_10_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*tmp_coords_jac_11_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_0_BLUE_DOWN*tmp_coords_jac_13_BLUE_DOWN + jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_12_BLUE_DOWN - jac_affine_2_0_BLUE_DOWN*tmp_coords_jac_14_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_16_BLUE_DOWN = 1.0 / (tmp_coords_jac_15_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_10_BLUE_DOWN - tmp_coords_jac_11_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - tmp_coords_jac_13_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(tmp_coords_jac_12_BLUE_DOWN - tmp_coords_jac_14_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(-jac_affine_0_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_BLUE_DOWN = tmp_coords_jac_16_BLUE_DOWN*(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN);
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(tmp_coords_jac_15_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 2*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_q_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_BLUE_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_BLUE_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_BLUE_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_BLUE_DOWN*jac_affine_inv_0_0_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_BLUE_DOWN*jac_affine_inv_0_1_BLUE_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_BLUE_DOWN*jac_affine_inv_0_2_BLUE_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_BLUE_DOWN*jac_affine_inv_1_0_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_BLUE_DOWN*jac_affine_inv_1_1_BLUE_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_BLUE_DOWN*jac_affine_inv_1_2_BLUE_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_BLUE_DOWN*jac_affine_inv_2_0_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_BLUE_DOWN*jac_affine_inv_2_1_BLUE_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_BLUE_DOWN*jac_affine_inv_2_2_BLUE_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_BLUE_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_BLUE_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_BLUE_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -2059,110 +2059,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]));
@@ -2189,376 +2189,376 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t tmp_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t tmp_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t tmp_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t tmp_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
-       const real_t tmp_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_9_GREEN_UP;
-       const real_t tmp_13_GREEN_UP = 1.0 / (tmp_12_GREEN_UP);
-       const real_t jac_affine_inv_0_0_GREEN_UP = tmp_13_GREEN_UP*(tmp_7_GREEN_UP - tmp_8_GREEN_UP);
-       const real_t jac_affine_inv_0_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_10_GREEN_UP);
-       const real_t jac_affine_inv_0_2_GREEN_UP = tmp_13_GREEN_UP*(-tmp_11_GREEN_UP + tmp_9_GREEN_UP);
-       const real_t jac_affine_inv_1_0_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_1_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_1_2_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t jac_affine_inv_2_0_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_1_GREEN_UP = tmp_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
-       const real_t jac_affine_inv_2_2_GREEN_UP = tmp_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
-       const real_t abs_det_jac_affine_GREEN_UP = abs(tmp_12_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_11_GREEN_UP = jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_9_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_8_GREEN_UP = jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_7_GREEN_UP = jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_10_GREEN_UP = jac_affine_0_1_GREEN_UP*jac_affine_2_2_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_12_GREEN_UP = jac_affine_0_0_GREEN_UP*tmp_coords_jac_7_GREEN_UP - jac_affine_0_0_GREEN_UP*tmp_coords_jac_8_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_0_GREEN_UP*tmp_coords_jac_10_GREEN_UP - jac_affine_2_0_GREEN_UP*tmp_coords_jac_11_GREEN_UP + jac_affine_2_0_GREEN_UP*tmp_coords_jac_9_GREEN_UP;
+       const walberla::float64 tmp_coords_jac_13_GREEN_UP = 1.0 / (tmp_coords_jac_12_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(tmp_coords_jac_7_GREEN_UP - tmp_coords_jac_8_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_2_GREEN_UP*jac_affine_2_1_GREEN_UP - tmp_coords_jac_10_GREEN_UP);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-tmp_coords_jac_11_GREEN_UP + tmp_coords_jac_9_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(-jac_affine_0_0_GREEN_UP*jac_affine_2_1_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_UP = tmp_coords_jac_13_GREEN_UP*(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP);
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(tmp_coords_jac_12_GREEN_UP);
        {
           /* CellType.GREEN_UP */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_UP*tmp_q_4 + jac_affine_inv_1_0_GREEN_UP*tmp_q_4 + jac_affine_inv_2_0_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_UP*tmp_q_4 + jac_affine_inv_1_1_GREEN_UP*tmp_q_4 + jac_affine_inv_2_1_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_UP*tmp_q_4 + jac_affine_inv_1_2_GREEN_UP*tmp_q_4 + jac_affine_inv_2_2_GREEN_UP*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_UP*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_UP*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_UP*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_UP*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_UP*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_UP*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_UP*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_UP*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_UP*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_UP*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_UP*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_UP*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_UP*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_UP*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_UP*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_UP*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_UP*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_UP*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_UP*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_UP*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_UP*jac_affine_inv_0_0_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_UP*jac_affine_inv_0_1_GREEN_UP)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_UP*jac_affine_inv_0_2_GREEN_UP)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_UP*jac_affine_inv_1_0_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_UP*jac_affine_inv_1_1_GREEN_UP)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_UP*jac_affine_inv_1_2_GREEN_UP)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_UP*jac_affine_inv_2_0_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_UP*jac_affine_inv_2_1_GREEN_UP)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_UP*jac_affine_inv_2_2_GREEN_UP)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_UP*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_UP*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_UP*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -2615,110 +2615,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -2745,379 +2745,379 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t tmp_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t tmp_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t tmp_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t tmp_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
-       const real_t tmp_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_14_GREEN_DOWN;
-       const real_t tmp_16_GREEN_DOWN = 1.0 / (tmp_15_GREEN_DOWN);
-       const real_t jac_affine_inv_0_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_10_GREEN_DOWN - tmp_11_GREEN_DOWN);
-       const real_t jac_affine_inv_0_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_13_GREEN_DOWN);
-       const real_t jac_affine_inv_0_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(tmp_12_GREEN_DOWN - tmp_14_GREEN_DOWN);
-       const real_t jac_affine_inv_1_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_1_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_0_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_1_GREEN_DOWN = tmp_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
-       const real_t jac_affine_inv_2_2_GREEN_DOWN = tmp_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(tmp_15_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_14_GREEN_DOWN = jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_12_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_11_GREEN_DOWN = jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_10_GREEN_DOWN = jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_13_GREEN_DOWN = jac_affine_0_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_15_GREEN_DOWN = jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_10_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*tmp_coords_jac_11_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_0_GREEN_DOWN*tmp_coords_jac_13_GREEN_DOWN + jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_12_GREEN_DOWN - jac_affine_2_0_GREEN_DOWN*tmp_coords_jac_14_GREEN_DOWN;
+       const walberla::float64 tmp_coords_jac_16_GREEN_DOWN = 1.0 / (tmp_coords_jac_15_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_10_GREEN_DOWN - tmp_coords_jac_11_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - tmp_coords_jac_13_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_0_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(tmp_coords_jac_12_GREEN_DOWN - tmp_coords_jac_14_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_1_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_0_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_1_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(-jac_affine_0_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 jac_affine_inv_2_2_GREEN_DOWN = tmp_coords_jac_16_GREEN_DOWN*(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN);
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(tmp_coords_jac_15_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
-             const real_t k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             const real_t k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
-             const real_t k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_0_4 = 0.0;
-             real_t q_acc_0_5 = 0.0;
-             real_t q_acc_0_6 = 0.0;
-             real_t q_acc_0_7 = 0.0;
-             real_t q_acc_0_8 = 0.0;
-             real_t q_acc_0_9 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_1_4 = 0.0;
-             real_t q_acc_1_5 = 0.0;
-             real_t q_acc_1_6 = 0.0;
-             real_t q_acc_1_7 = 0.0;
-             real_t q_acc_1_8 = 0.0;
-             real_t q_acc_1_9 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_2_4 = 0.0;
-             real_t q_acc_2_5 = 0.0;
-             real_t q_acc_2_6 = 0.0;
-             real_t q_acc_2_7 = 0.0;
-             real_t q_acc_2_8 = 0.0;
-             real_t q_acc_2_9 = 0.0;
-             real_t q_acc_3_3 = 0.0;
-             real_t q_acc_3_4 = 0.0;
-             real_t q_acc_3_5 = 0.0;
-             real_t q_acc_3_6 = 0.0;
-             real_t q_acc_3_7 = 0.0;
-             real_t q_acc_3_8 = 0.0;
-             real_t q_acc_3_9 = 0.0;
-             real_t q_acc_4_4 = 0.0;
-             real_t q_acc_4_5 = 0.0;
-             real_t q_acc_4_6 = 0.0;
-             real_t q_acc_4_7 = 0.0;
-             real_t q_acc_4_8 = 0.0;
-             real_t q_acc_4_9 = 0.0;
-             real_t q_acc_5_5 = 0.0;
-             real_t q_acc_5_6 = 0.0;
-             real_t q_acc_5_7 = 0.0;
-             real_t q_acc_5_8 = 0.0;
-             real_t q_acc_5_9 = 0.0;
-             real_t q_acc_6_6 = 0.0;
-             real_t q_acc_6_7 = 0.0;
-             real_t q_acc_6_8 = 0.0;
-             real_t q_acc_6_9 = 0.0;
-             real_t q_acc_7_7 = 0.0;
-             real_t q_acc_7_8 = 0.0;
-             real_t q_acc_7_9 = 0.0;
-             real_t q_acc_8_8 = 0.0;
-             real_t q_acc_8_9 = 0.0;
-             real_t q_acc_9_9 = 0.0;
+             const walberla::float64 k_dof_0 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_1 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_2 = _data_kVertex[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 k_dof_3 = _data_kVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 k_dof_4 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + 4*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_5 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 5*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_6 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + 1];
+             const walberla::float64 k_dof_7 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 3*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             const walberla::float64 k_dof_8 = _data_kEdge[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge) - ((ctr_1*(ctr_1 + 1)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge - 1)*(micro_edges_per_macro_edge + 1)) / (6)) + 6*((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge - 1)*(-ctr_2 + micro_edges_per_macro_edge + 1)) / (6))];
+             const walberla::float64 k_dof_9 = _data_kEdge[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + ((micro_edges_per_macro_edge*(micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_0_4 = 0.0;
+             walberla::float64 q_acc_0_5 = 0.0;
+             walberla::float64 q_acc_0_6 = 0.0;
+             walberla::float64 q_acc_0_7 = 0.0;
+             walberla::float64 q_acc_0_8 = 0.0;
+             walberla::float64 q_acc_0_9 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_1_4 = 0.0;
+             walberla::float64 q_acc_1_5 = 0.0;
+             walberla::float64 q_acc_1_6 = 0.0;
+             walberla::float64 q_acc_1_7 = 0.0;
+             walberla::float64 q_acc_1_8 = 0.0;
+             walberla::float64 q_acc_1_9 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_2_4 = 0.0;
+             walberla::float64 q_acc_2_5 = 0.0;
+             walberla::float64 q_acc_2_6 = 0.0;
+             walberla::float64 q_acc_2_7 = 0.0;
+             walberla::float64 q_acc_2_8 = 0.0;
+             walberla::float64 q_acc_2_9 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_3_4 = 0.0;
+             walberla::float64 q_acc_3_5 = 0.0;
+             walberla::float64 q_acc_3_6 = 0.0;
+             walberla::float64 q_acc_3_7 = 0.0;
+             walberla::float64 q_acc_3_8 = 0.0;
+             walberla::float64 q_acc_3_9 = 0.0;
+             walberla::float64 q_acc_4_4 = 0.0;
+             walberla::float64 q_acc_4_5 = 0.0;
+             walberla::float64 q_acc_4_6 = 0.0;
+             walberla::float64 q_acc_4_7 = 0.0;
+             walberla::float64 q_acc_4_8 = 0.0;
+             walberla::float64 q_acc_4_9 = 0.0;
+             walberla::float64 q_acc_5_5 = 0.0;
+             walberla::float64 q_acc_5_6 = 0.0;
+             walberla::float64 q_acc_5_7 = 0.0;
+             walberla::float64 q_acc_5_8 = 0.0;
+             walberla::float64 q_acc_5_9 = 0.0;
+             walberla::float64 q_acc_6_6 = 0.0;
+             walberla::float64 q_acc_6_7 = 0.0;
+             walberla::float64 q_acc_6_8 = 0.0;
+             walberla::float64 q_acc_6_9 = 0.0;
+             walberla::float64 q_acc_7_7 = 0.0;
+             walberla::float64 q_acc_7_8 = 0.0;
+             walberla::float64 q_acc_7_9 = 0.0;
+             walberla::float64 q_acc_8_8 = 0.0;
+             walberla::float64 q_acc_8_9 = 0.0;
+             walberla::float64 q_acc_9_9 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t tmp_q_0 = 4.0*_data_q_p_2[q];
-                const real_t tmp_q_1 = 4.0*_data_q_p_0[q];
-                const real_t tmp_q_2 = 4.0*_data_q_p_1[q];
-                const real_t tmp_q_3 = tmp_q_1 + tmp_q_2;
-                const real_t tmp_q_4 = tmp_q_0 + tmp_q_3 - 3.0;
-                const real_t tmp_q_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_q_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_q_4;
-                const real_t tmp_q_8 = tmp_q_1*_data_q_p_1[q];
-                const real_t tmp_q_9 = tmp_q_1*_data_q_p_2[q];
-                const real_t tmp_q_10 = tmp_q_2*_data_q_p_2[q];
-                const real_t tmp_q_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
-                const real_t tmp_q_12 = tmp_q_11*2.0;
-                const real_t tmp_q_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
-                const real_t tmp_q_14 = tmp_q_13*2.0;
-                const real_t tmp_q_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
-                const real_t tmp_q_16 = tmp_q_15*2.0;
-                const real_t tmp_q_17 = tmp_q_8 + tmp_q_9;
-                const real_t tmp_q_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_q_10 + tmp_q_12 + tmp_q_14 + tmp_q_16 + tmp_q_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_q_12 - _data_q_p_0[q]) + k_dof_2*(tmp_q_14 - _data_q_p_1[q]) + k_dof_3*(tmp_q_16 - _data_q_p_2[q]) + k_dof_4*tmp_q_10 + k_dof_5*tmp_q_9 + k_dof_6*tmp_q_8 + k_dof_7*(tmp_q_0 - tmp_q_10 + tmp_q_15*-4.0 - tmp_q_9) + k_dof_8*(-tmp_q_10 + tmp_q_13*-4.0 + tmp_q_2 - tmp_q_8) + k_dof_9*(tmp_q_1 + tmp_q_11*-4.0 - tmp_q_17))*_data_q_w[q];
-                const real_t tmp_q_19 = tmp_q_1 - 1.0;
-                const real_t tmp_q_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_19;
-                const real_t tmp_q_23 = tmp_q_2 - 1.0;
-                const real_t tmp_q_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_23;
-                const real_t tmp_q_27 = tmp_q_0 - 1.0;
-                const real_t tmp_q_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_27;
-                const real_t tmp_q_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_33 = tmp_q_31 + tmp_q_32;
-                const real_t tmp_q_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_36 = tmp_q_34 + tmp_q_35;
-                const real_t tmp_q_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_39 = tmp_q_37 + tmp_q_38;
-                const real_t tmp_q_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_42 = tmp_q_40 + tmp_q_41;
-                const real_t tmp_q_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_45 = tmp_q_43 + tmp_q_44;
-                const real_t tmp_q_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_0;
-                const real_t tmp_q_48 = tmp_q_46 + tmp_q_47;
-                const real_t tmp_q_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_51 = tmp_q_49 + tmp_q_50;
-                const real_t tmp_q_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_54 = tmp_q_52 + tmp_q_53;
-                const real_t tmp_q_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_1;
-                const real_t tmp_q_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_2;
-                const real_t tmp_q_57 = tmp_q_55 + tmp_q_56;
-                const real_t tmp_q_58 = -tmp_q_3 - 8.0*_data_q_p_2[q] + 4.0;
-                const real_t tmp_q_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58 - tmp_q_32 - tmp_q_41;
-                const real_t tmp_q_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58 - tmp_q_35 - tmp_q_44;
-                const real_t tmp_q_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58 - tmp_q_38 - tmp_q_47;
-                const real_t tmp_q_62 = tmp_q_0 - 4.0;
-                const real_t tmp_q_63 = -tmp_q_1 - tmp_q_62 - 8.0*_data_q_p_1[q];
-                const real_t tmp_q_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63 - tmp_q_31 - tmp_q_50;
-                const real_t tmp_q_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63 - tmp_q_34 - tmp_q_53;
-                const real_t tmp_q_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63 - tmp_q_37 - tmp_q_56;
-                const real_t tmp_q_67 = -tmp_q_2 - tmp_q_62 - 8.0*_data_q_p_0[q];
-                const real_t tmp_q_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67 - tmp_q_40 - tmp_q_49;
-                const real_t tmp_q_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67 - tmp_q_43 - tmp_q_52;
-                const real_t tmp_q_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67 - tmp_q_46 - tmp_q_55;
-                const real_t tmp_q_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
-                const real_t tmp_q_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
-                const real_t tmp_q_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
-                const real_t tmp_q_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
-                const real_t tmp_q_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
-                const real_t tmp_q_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
-                const real_t tmp_q_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
-                const real_t q_tmp_0_0 = tmp_q_18*((tmp_q_5*tmp_q_5) + (tmp_q_6*tmp_q_6) + (tmp_q_7*tmp_q_7));
-                const real_t q_tmp_0_1 = tmp_q_18*(tmp_q_20*tmp_q_5 + tmp_q_21*tmp_q_6 + tmp_q_22*tmp_q_7);
-                const real_t q_tmp_0_2 = tmp_q_18*(tmp_q_24*tmp_q_5 + tmp_q_25*tmp_q_6 + tmp_q_26*tmp_q_7);
-                const real_t q_tmp_0_3 = tmp_q_18*(tmp_q_28*tmp_q_5 + tmp_q_29*tmp_q_6 + tmp_q_30*tmp_q_7);
-                const real_t q_tmp_0_4 = tmp_q_18*(tmp_q_33*tmp_q_5 + tmp_q_36*tmp_q_6 + tmp_q_39*tmp_q_7);
-                const real_t q_tmp_0_5 = tmp_q_18*(tmp_q_42*tmp_q_5 + tmp_q_45*tmp_q_6 + tmp_q_48*tmp_q_7);
-                const real_t q_tmp_0_6 = tmp_q_18*(tmp_q_5*tmp_q_51 + tmp_q_54*tmp_q_6 + tmp_q_57*tmp_q_7);
-                const real_t q_tmp_0_7 = tmp_q_18*(tmp_q_5*tmp_q_59 + tmp_q_6*tmp_q_60 + tmp_q_61*tmp_q_7);
-                const real_t q_tmp_0_8 = tmp_q_18*(tmp_q_5*tmp_q_64 + tmp_q_6*tmp_q_65 + tmp_q_66*tmp_q_7);
-                const real_t q_tmp_0_9 = tmp_q_18*(tmp_q_5*tmp_q_68 + tmp_q_6*tmp_q_69 + tmp_q_7*tmp_q_70);
-                const real_t q_tmp_1_1 = tmp_q_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_q_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_q_71);
-                const real_t q_tmp_1_2 = tmp_q_18*(tmp_q_20*tmp_q_24 + tmp_q_21*tmp_q_25 + tmp_q_22*tmp_q_26);
-                const real_t q_tmp_1_3 = tmp_q_18*(tmp_q_20*tmp_q_28 + tmp_q_21*tmp_q_29 + tmp_q_22*tmp_q_30);
-                const real_t q_tmp_1_4 = tmp_q_18*(tmp_q_20*tmp_q_33 + tmp_q_21*tmp_q_36 + tmp_q_22*tmp_q_39);
-                const real_t q_tmp_1_5 = tmp_q_18*(tmp_q_20*tmp_q_42 + tmp_q_21*tmp_q_45 + tmp_q_22*tmp_q_48);
-                const real_t q_tmp_1_6 = tmp_q_18*(tmp_q_20*tmp_q_51 + tmp_q_21*tmp_q_54 + tmp_q_22*tmp_q_57);
-                const real_t q_tmp_1_7 = tmp_q_18*(tmp_q_20*tmp_q_59 + tmp_q_21*tmp_q_60 + tmp_q_22*tmp_q_61);
-                const real_t q_tmp_1_8 = tmp_q_18*(tmp_q_20*tmp_q_64 + tmp_q_21*tmp_q_65 + tmp_q_22*tmp_q_66);
-                const real_t q_tmp_1_9 = tmp_q_18*(tmp_q_20*tmp_q_68 + tmp_q_21*tmp_q_69 + tmp_q_22*tmp_q_70);
-                const real_t q_tmp_2_2 = tmp_q_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_q_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_q_72);
-                const real_t q_tmp_2_3 = tmp_q_18*(tmp_q_24*tmp_q_28 + tmp_q_25*tmp_q_29 + tmp_q_26*tmp_q_30);
-                const real_t q_tmp_2_4 = tmp_q_18*(tmp_q_24*tmp_q_33 + tmp_q_25*tmp_q_36 + tmp_q_26*tmp_q_39);
-                const real_t q_tmp_2_5 = tmp_q_18*(tmp_q_24*tmp_q_42 + tmp_q_25*tmp_q_45 + tmp_q_26*tmp_q_48);
-                const real_t q_tmp_2_6 = tmp_q_18*(tmp_q_24*tmp_q_51 + tmp_q_25*tmp_q_54 + tmp_q_26*tmp_q_57);
-                const real_t q_tmp_2_7 = tmp_q_18*(tmp_q_24*tmp_q_59 + tmp_q_25*tmp_q_60 + tmp_q_26*tmp_q_61);
-                const real_t q_tmp_2_8 = tmp_q_18*(tmp_q_24*tmp_q_64 + tmp_q_25*tmp_q_65 + tmp_q_26*tmp_q_66);
-                const real_t q_tmp_2_9 = tmp_q_18*(tmp_q_24*tmp_q_68 + tmp_q_25*tmp_q_69 + tmp_q_26*tmp_q_70);
-                const real_t q_tmp_3_3 = tmp_q_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_q_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_q_73);
-                const real_t q_tmp_3_4 = tmp_q_18*(tmp_q_28*tmp_q_33 + tmp_q_29*tmp_q_36 + tmp_q_30*tmp_q_39);
-                const real_t q_tmp_3_5 = tmp_q_18*(tmp_q_28*tmp_q_42 + tmp_q_29*tmp_q_45 + tmp_q_30*tmp_q_48);
-                const real_t q_tmp_3_6 = tmp_q_18*(tmp_q_28*tmp_q_51 + tmp_q_29*tmp_q_54 + tmp_q_30*tmp_q_57);
-                const real_t q_tmp_3_7 = tmp_q_18*(tmp_q_28*tmp_q_59 + tmp_q_29*tmp_q_60 + tmp_q_30*tmp_q_61);
-                const real_t q_tmp_3_8 = tmp_q_18*(tmp_q_28*tmp_q_64 + tmp_q_29*tmp_q_65 + tmp_q_30*tmp_q_66);
-                const real_t q_tmp_3_9 = tmp_q_18*(tmp_q_28*tmp_q_68 + tmp_q_29*tmp_q_69 + tmp_q_30*tmp_q_70);
-                const real_t q_tmp_4_4 = tmp_q_18*(((tmp_q_74 + tmp_q_75)*(tmp_q_74 + tmp_q_75))*16.0 + ((tmp_q_76 + tmp_q_77)*(tmp_q_76 + tmp_q_77))*16.0 + ((tmp_q_78 + tmp_q_79)*(tmp_q_78 + tmp_q_79))*16.0);
-                const real_t q_tmp_4_5 = tmp_q_18*(tmp_q_33*tmp_q_42 + tmp_q_36*tmp_q_45 + tmp_q_39*tmp_q_48);
-                const real_t q_tmp_4_6 = tmp_q_18*(tmp_q_33*tmp_q_51 + tmp_q_36*tmp_q_54 + tmp_q_39*tmp_q_57);
-                const real_t q_tmp_4_7 = tmp_q_18*(tmp_q_33*tmp_q_59 + tmp_q_36*tmp_q_60 + tmp_q_39*tmp_q_61);
-                const real_t q_tmp_4_8 = tmp_q_18*(tmp_q_33*tmp_q_64 + tmp_q_36*tmp_q_65 + tmp_q_39*tmp_q_66);
-                const real_t q_tmp_4_9 = tmp_q_18*(tmp_q_33*tmp_q_68 + tmp_q_36*tmp_q_69 + tmp_q_39*tmp_q_70);
-                const real_t q_tmp_5_5 = tmp_q_18*(((tmp_q_80 + tmp_q_81)*(tmp_q_80 + tmp_q_81))*16.0 + ((tmp_q_82 + tmp_q_83)*(tmp_q_82 + tmp_q_83))*16.0 + ((tmp_q_84 + tmp_q_85)*(tmp_q_84 + tmp_q_85))*16.0);
-                const real_t q_tmp_5_6 = tmp_q_18*(tmp_q_42*tmp_q_51 + tmp_q_45*tmp_q_54 + tmp_q_48*tmp_q_57);
-                const real_t q_tmp_5_7 = tmp_q_18*(tmp_q_42*tmp_q_59 + tmp_q_45*tmp_q_60 + tmp_q_48*tmp_q_61);
-                const real_t q_tmp_5_8 = tmp_q_18*(tmp_q_42*tmp_q_64 + tmp_q_45*tmp_q_65 + tmp_q_48*tmp_q_66);
-                const real_t q_tmp_5_9 = tmp_q_18*(tmp_q_42*tmp_q_68 + tmp_q_45*tmp_q_69 + tmp_q_48*tmp_q_70);
-                const real_t q_tmp_6_6 = tmp_q_18*(((tmp_q_86 + tmp_q_87)*(tmp_q_86 + tmp_q_87))*16.0 + ((tmp_q_88 + tmp_q_89)*(tmp_q_88 + tmp_q_89))*16.0 + ((tmp_q_90 + tmp_q_91)*(tmp_q_90 + tmp_q_91))*16.0);
-                const real_t q_tmp_6_7 = tmp_q_18*(tmp_q_51*tmp_q_59 + tmp_q_54*tmp_q_60 + tmp_q_57*tmp_q_61);
-                const real_t q_tmp_6_8 = tmp_q_18*(tmp_q_51*tmp_q_64 + tmp_q_54*tmp_q_65 + tmp_q_57*tmp_q_66);
-                const real_t q_tmp_6_9 = tmp_q_18*(tmp_q_51*tmp_q_68 + tmp_q_54*tmp_q_69 + tmp_q_57*tmp_q_70);
-                const real_t q_tmp_7_7 = tmp_q_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_75 - tmp_q_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_77 - tmp_q_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_q_58*0.25 - tmp_q_79 - tmp_q_85))*16.0);
-                const real_t q_tmp_7_8 = tmp_q_18*(tmp_q_59*tmp_q_64 + tmp_q_60*tmp_q_65 + tmp_q_61*tmp_q_66);
-                const real_t q_tmp_7_9 = tmp_q_18*(tmp_q_59*tmp_q_68 + tmp_q_60*tmp_q_69 + tmp_q_61*tmp_q_70);
-                const real_t q_tmp_8_8 = tmp_q_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_74 - tmp_q_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_76 - tmp_q_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_q_63*0.25 - tmp_q_78 - tmp_q_91))*16.0);
-                const real_t q_tmp_8_9 = tmp_q_18*(tmp_q_64*tmp_q_68 + tmp_q_65*tmp_q_69 + tmp_q_66*tmp_q_70);
-                const real_t q_tmp_9_9 = tmp_q_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_80 - tmp_q_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_82 - tmp_q_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_q_67*0.25 - tmp_q_84 - tmp_q_90))*16.0);
+                const walberla::float64 tmp_qloop_0 = 4.0*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_1 = 4.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_2 = 4.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_3 = tmp_qloop_1 + tmp_qloop_2;
+                const walberla::float64 tmp_qloop_4 = tmp_qloop_0 + tmp_qloop_3 - 3.0;
+                const walberla::float64 tmp_qloop_5 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_6 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_7 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_4 + jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_4;
+                const walberla::float64 tmp_qloop_8 = tmp_qloop_1*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_9 = tmp_qloop_1*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_10 = tmp_qloop_2*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_11 = (_data_q_p_0[q]*_data_q_p_0[q]);
+                const walberla::float64 tmp_qloop_12 = tmp_qloop_11*2.0;
+                const walberla::float64 tmp_qloop_13 = (_data_q_p_1[q]*_data_q_p_1[q]);
+                const walberla::float64 tmp_qloop_14 = tmp_qloop_13*2.0;
+                const walberla::float64 tmp_qloop_15 = (_data_q_p_2[q]*_data_q_p_2[q]);
+                const walberla::float64 tmp_qloop_16 = tmp_qloop_15*2.0;
+                const walberla::float64 tmp_qloop_17 = tmp_qloop_8 + tmp_qloop_9;
+                const walberla::float64 tmp_qloop_18 = abs_det_jac_affine_GREEN_DOWN*(k_dof_0*(tmp_qloop_10 + tmp_qloop_12 + tmp_qloop_14 + tmp_qloop_16 + tmp_qloop_17 - 3.0*_data_q_p_0[q] - 3.0*_data_q_p_1[q] - 3.0*_data_q_p_2[q] + 1.0) + k_dof_1*(tmp_qloop_12 - _data_q_p_0[q]) + k_dof_2*(tmp_qloop_14 - _data_q_p_1[q]) + k_dof_3*(tmp_qloop_16 - _data_q_p_2[q]) + k_dof_4*tmp_qloop_10 + k_dof_5*tmp_qloop_9 + k_dof_6*tmp_qloop_8 + k_dof_7*(tmp_qloop_0 - tmp_qloop_10 + tmp_qloop_15*-4.0 - tmp_qloop_9) + k_dof_8*(-tmp_qloop_10 + tmp_qloop_13*-4.0 + tmp_qloop_2 - tmp_qloop_8) + k_dof_9*(tmp_qloop_1 + tmp_qloop_11*-4.0 - tmp_qloop_17))*_data_q_w[q];
+                const walberla::float64 tmp_qloop_19 = tmp_qloop_1 - 1.0;
+                const walberla::float64 tmp_qloop_20 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_21 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_22 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_19;
+                const walberla::float64 tmp_qloop_23 = tmp_qloop_2 - 1.0;
+                const walberla::float64 tmp_qloop_24 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_25 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_26 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_23;
+                const walberla::float64 tmp_qloop_27 = tmp_qloop_0 - 1.0;
+                const walberla::float64 tmp_qloop_28 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_29 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_30 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_27;
+                const walberla::float64 tmp_qloop_31 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_32 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_33 = tmp_qloop_31 + tmp_qloop_32;
+                const walberla::float64 tmp_qloop_34 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_35 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_36 = tmp_qloop_34 + tmp_qloop_35;
+                const walberla::float64 tmp_qloop_37 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_38 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_39 = tmp_qloop_37 + tmp_qloop_38;
+                const walberla::float64 tmp_qloop_40 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_41 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_42 = tmp_qloop_40 + tmp_qloop_41;
+                const walberla::float64 tmp_qloop_43 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_44 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_45 = tmp_qloop_43 + tmp_qloop_44;
+                const walberla::float64 tmp_qloop_46 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_47 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_0;
+                const walberla::float64 tmp_qloop_48 = tmp_qloop_46 + tmp_qloop_47;
+                const walberla::float64 tmp_qloop_49 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_50 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_51 = tmp_qloop_49 + tmp_qloop_50;
+                const walberla::float64 tmp_qloop_52 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_53 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_54 = tmp_qloop_52 + tmp_qloop_53;
+                const walberla::float64 tmp_qloop_55 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_1;
+                const walberla::float64 tmp_qloop_56 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_2;
+                const walberla::float64 tmp_qloop_57 = tmp_qloop_55 + tmp_qloop_56;
+                const walberla::float64 tmp_qloop_58 = -tmp_qloop_3 - 8.0*_data_q_p_2[q] + 4.0;
+                const walberla::float64 tmp_qloop_59 = jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_32 - tmp_qloop_41;
+                const walberla::float64 tmp_qloop_60 = jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_35 - tmp_qloop_44;
+                const walberla::float64 tmp_qloop_61 = jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58 - tmp_qloop_38 - tmp_qloop_47;
+                const walberla::float64 tmp_qloop_62 = tmp_qloop_0 - 4.0;
+                const walberla::float64 tmp_qloop_63 = -tmp_qloop_1 - tmp_qloop_62 - 8.0*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_64 = jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_31 - tmp_qloop_50;
+                const walberla::float64 tmp_qloop_65 = jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_34 - tmp_qloop_53;
+                const walberla::float64 tmp_qloop_66 = jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63 - tmp_qloop_37 - tmp_qloop_56;
+                const walberla::float64 tmp_qloop_67 = -tmp_qloop_2 - tmp_qloop_62 - 8.0*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_68 = jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_40 - tmp_qloop_49;
+                const walberla::float64 tmp_qloop_69 = jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_43 - tmp_qloop_52;
+                const walberla::float64 tmp_qloop_70 = jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67 - tmp_qloop_46 - tmp_qloop_55;
+                const walberla::float64 tmp_qloop_71 = ((-0.25 + _data_q_p_0[q])*(-0.25 + _data_q_p_0[q]))*16.0;
+                const walberla::float64 tmp_qloop_72 = ((-0.25 + _data_q_p_1[q])*(-0.25 + _data_q_p_1[q]))*16.0;
+                const walberla::float64 tmp_qloop_73 = ((-0.25 + _data_q_p_2[q])*(-0.25 + _data_q_p_2[q]))*16.0;
+                const walberla::float64 tmp_qloop_74 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_75 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_76 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_77 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_78 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_79 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_80 = jac_affine_inv_2_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_81 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_82 = jac_affine_inv_2_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_83 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_84 = jac_affine_inv_2_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_85 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_2[q];
+                const walberla::float64 tmp_qloop_86 = jac_affine_inv_1_0_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_87 = jac_affine_inv_0_0_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_88 = jac_affine_inv_1_1_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_89 = jac_affine_inv_0_1_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 tmp_qloop_90 = jac_affine_inv_1_2_GREEN_DOWN*_data_q_p_0[q];
+                const walberla::float64 tmp_qloop_91 = jac_affine_inv_0_2_GREEN_DOWN*_data_q_p_1[q];
+                const walberla::float64 q_tmp_0_0 = tmp_qloop_18*((tmp_qloop_5*tmp_qloop_5) + (tmp_qloop_6*tmp_qloop_6) + (tmp_qloop_7*tmp_qloop_7));
+                const walberla::float64 q_tmp_0_1 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_5 + tmp_qloop_21*tmp_qloop_6 + tmp_qloop_22*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_2 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_5 + tmp_qloop_25*tmp_qloop_6 + tmp_qloop_26*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_3 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_5 + tmp_qloop_29*tmp_qloop_6 + tmp_qloop_30*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_4 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_5 + tmp_qloop_36*tmp_qloop_6 + tmp_qloop_39*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_5 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_5 + tmp_qloop_45*tmp_qloop_6 + tmp_qloop_48*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_6 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_51 + tmp_qloop_54*tmp_qloop_6 + tmp_qloop_57*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_7 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_59 + tmp_qloop_6*tmp_qloop_60 + tmp_qloop_61*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_8 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_64 + tmp_qloop_6*tmp_qloop_65 + tmp_qloop_66*tmp_qloop_7);
+                const walberla::float64 q_tmp_0_9 = tmp_qloop_18*(tmp_qloop_5*tmp_qloop_68 + tmp_qloop_6*tmp_qloop_69 + tmp_qloop_7*tmp_qloop_70);
+                const walberla::float64 q_tmp_1_1 = tmp_qloop_18*((jac_affine_inv_0_0_GREEN_DOWN*jac_affine_inv_0_0_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_1_GREEN_DOWN*jac_affine_inv_0_1_GREEN_DOWN)*tmp_qloop_71 + (jac_affine_inv_0_2_GREEN_DOWN*jac_affine_inv_0_2_GREEN_DOWN)*tmp_qloop_71);
+                const walberla::float64 q_tmp_1_2 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_24 + tmp_qloop_21*tmp_qloop_25 + tmp_qloop_22*tmp_qloop_26);
+                const walberla::float64 q_tmp_1_3 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_28 + tmp_qloop_21*tmp_qloop_29 + tmp_qloop_22*tmp_qloop_30);
+                const walberla::float64 q_tmp_1_4 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_33 + tmp_qloop_21*tmp_qloop_36 + tmp_qloop_22*tmp_qloop_39);
+                const walberla::float64 q_tmp_1_5 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_42 + tmp_qloop_21*tmp_qloop_45 + tmp_qloop_22*tmp_qloop_48);
+                const walberla::float64 q_tmp_1_6 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_51 + tmp_qloop_21*tmp_qloop_54 + tmp_qloop_22*tmp_qloop_57);
+                const walberla::float64 q_tmp_1_7 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_59 + tmp_qloop_21*tmp_qloop_60 + tmp_qloop_22*tmp_qloop_61);
+                const walberla::float64 q_tmp_1_8 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_64 + tmp_qloop_21*tmp_qloop_65 + tmp_qloop_22*tmp_qloop_66);
+                const walberla::float64 q_tmp_1_9 = tmp_qloop_18*(tmp_qloop_20*tmp_qloop_68 + tmp_qloop_21*tmp_qloop_69 + tmp_qloop_22*tmp_qloop_70);
+                const walberla::float64 q_tmp_2_2 = tmp_qloop_18*((jac_affine_inv_1_0_GREEN_DOWN*jac_affine_inv_1_0_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_1_GREEN_DOWN*jac_affine_inv_1_1_GREEN_DOWN)*tmp_qloop_72 + (jac_affine_inv_1_2_GREEN_DOWN*jac_affine_inv_1_2_GREEN_DOWN)*tmp_qloop_72);
+                const walberla::float64 q_tmp_2_3 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_28 + tmp_qloop_25*tmp_qloop_29 + tmp_qloop_26*tmp_qloop_30);
+                const walberla::float64 q_tmp_2_4 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_33 + tmp_qloop_25*tmp_qloop_36 + tmp_qloop_26*tmp_qloop_39);
+                const walberla::float64 q_tmp_2_5 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_42 + tmp_qloop_25*tmp_qloop_45 + tmp_qloop_26*tmp_qloop_48);
+                const walberla::float64 q_tmp_2_6 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_51 + tmp_qloop_25*tmp_qloop_54 + tmp_qloop_26*tmp_qloop_57);
+                const walberla::float64 q_tmp_2_7 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_59 + tmp_qloop_25*tmp_qloop_60 + tmp_qloop_26*tmp_qloop_61);
+                const walberla::float64 q_tmp_2_8 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_64 + tmp_qloop_25*tmp_qloop_65 + tmp_qloop_26*tmp_qloop_66);
+                const walberla::float64 q_tmp_2_9 = tmp_qloop_18*(tmp_qloop_24*tmp_qloop_68 + tmp_qloop_25*tmp_qloop_69 + tmp_qloop_26*tmp_qloop_70);
+                const walberla::float64 q_tmp_3_3 = tmp_qloop_18*((jac_affine_inv_2_0_GREEN_DOWN*jac_affine_inv_2_0_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_1_GREEN_DOWN*jac_affine_inv_2_1_GREEN_DOWN)*tmp_qloop_73 + (jac_affine_inv_2_2_GREEN_DOWN*jac_affine_inv_2_2_GREEN_DOWN)*tmp_qloop_73);
+                const walberla::float64 q_tmp_3_4 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_33 + tmp_qloop_29*tmp_qloop_36 + tmp_qloop_30*tmp_qloop_39);
+                const walberla::float64 q_tmp_3_5 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_42 + tmp_qloop_29*tmp_qloop_45 + tmp_qloop_30*tmp_qloop_48);
+                const walberla::float64 q_tmp_3_6 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_51 + tmp_qloop_29*tmp_qloop_54 + tmp_qloop_30*tmp_qloop_57);
+                const walberla::float64 q_tmp_3_7 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_59 + tmp_qloop_29*tmp_qloop_60 + tmp_qloop_30*tmp_qloop_61);
+                const walberla::float64 q_tmp_3_8 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_64 + tmp_qloop_29*tmp_qloop_65 + tmp_qloop_30*tmp_qloop_66);
+                const walberla::float64 q_tmp_3_9 = tmp_qloop_18*(tmp_qloop_28*tmp_qloop_68 + tmp_qloop_29*tmp_qloop_69 + tmp_qloop_30*tmp_qloop_70);
+                const walberla::float64 q_tmp_4_4 = tmp_qloop_18*(((tmp_qloop_74 + tmp_qloop_75)*(tmp_qloop_74 + tmp_qloop_75))*16.0 + ((tmp_qloop_76 + tmp_qloop_77)*(tmp_qloop_76 + tmp_qloop_77))*16.0 + ((tmp_qloop_78 + tmp_qloop_79)*(tmp_qloop_78 + tmp_qloop_79))*16.0);
+                const walberla::float64 q_tmp_4_5 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_42 + tmp_qloop_36*tmp_qloop_45 + tmp_qloop_39*tmp_qloop_48);
+                const walberla::float64 q_tmp_4_6 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_51 + tmp_qloop_36*tmp_qloop_54 + tmp_qloop_39*tmp_qloop_57);
+                const walberla::float64 q_tmp_4_7 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_59 + tmp_qloop_36*tmp_qloop_60 + tmp_qloop_39*tmp_qloop_61);
+                const walberla::float64 q_tmp_4_8 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_64 + tmp_qloop_36*tmp_qloop_65 + tmp_qloop_39*tmp_qloop_66);
+                const walberla::float64 q_tmp_4_9 = tmp_qloop_18*(tmp_qloop_33*tmp_qloop_68 + tmp_qloop_36*tmp_qloop_69 + tmp_qloop_39*tmp_qloop_70);
+                const walberla::float64 q_tmp_5_5 = tmp_qloop_18*(((tmp_qloop_80 + tmp_qloop_81)*(tmp_qloop_80 + tmp_qloop_81))*16.0 + ((tmp_qloop_82 + tmp_qloop_83)*(tmp_qloop_82 + tmp_qloop_83))*16.0 + ((tmp_qloop_84 + tmp_qloop_85)*(tmp_qloop_84 + tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_5_6 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_51 + tmp_qloop_45*tmp_qloop_54 + tmp_qloop_48*tmp_qloop_57);
+                const walberla::float64 q_tmp_5_7 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_59 + tmp_qloop_45*tmp_qloop_60 + tmp_qloop_48*tmp_qloop_61);
+                const walberla::float64 q_tmp_5_8 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_64 + tmp_qloop_45*tmp_qloop_65 + tmp_qloop_48*tmp_qloop_66);
+                const walberla::float64 q_tmp_5_9 = tmp_qloop_18*(tmp_qloop_42*tmp_qloop_68 + tmp_qloop_45*tmp_qloop_69 + tmp_qloop_48*tmp_qloop_70);
+                const walberla::float64 q_tmp_6_6 = tmp_qloop_18*(((tmp_qloop_86 + tmp_qloop_87)*(tmp_qloop_86 + tmp_qloop_87))*16.0 + ((tmp_qloop_88 + tmp_qloop_89)*(tmp_qloop_88 + tmp_qloop_89))*16.0 + ((tmp_qloop_90 + tmp_qloop_91)*(tmp_qloop_90 + tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_6_7 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_59 + tmp_qloop_54*tmp_qloop_60 + tmp_qloop_57*tmp_qloop_61);
+                const walberla::float64 q_tmp_6_8 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_64 + tmp_qloop_54*tmp_qloop_65 + tmp_qloop_57*tmp_qloop_66);
+                const walberla::float64 q_tmp_6_9 = tmp_qloop_18*(tmp_qloop_51*tmp_qloop_68 + tmp_qloop_54*tmp_qloop_69 + tmp_qloop_57*tmp_qloop_70);
+                const walberla::float64 q_tmp_7_7 = tmp_qloop_18*(((jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81)*(jac_affine_inv_2_0_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_75 - tmp_qloop_81))*16.0 + ((jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83)*(jac_affine_inv_2_1_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_77 - tmp_qloop_83))*16.0 + ((jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85)*(jac_affine_inv_2_2_GREEN_DOWN*tmp_qloop_58*0.25 - tmp_qloop_79 - tmp_qloop_85))*16.0);
+                const walberla::float64 q_tmp_7_8 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_64 + tmp_qloop_60*tmp_qloop_65 + tmp_qloop_61*tmp_qloop_66);
+                const walberla::float64 q_tmp_7_9 = tmp_qloop_18*(tmp_qloop_59*tmp_qloop_68 + tmp_qloop_60*tmp_qloop_69 + tmp_qloop_61*tmp_qloop_70);
+                const walberla::float64 q_tmp_8_8 = tmp_qloop_18*(((jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87)*(jac_affine_inv_1_0_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_74 - tmp_qloop_87))*16.0 + ((jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89)*(jac_affine_inv_1_1_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_76 - tmp_qloop_89))*16.0 + ((jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91)*(jac_affine_inv_1_2_GREEN_DOWN*tmp_qloop_63*0.25 - tmp_qloop_78 - tmp_qloop_91))*16.0);
+                const walberla::float64 q_tmp_8_9 = tmp_qloop_18*(tmp_qloop_64*tmp_qloop_68 + tmp_qloop_65*tmp_qloop_69 + tmp_qloop_66*tmp_qloop_70);
+                const walberla::float64 q_tmp_9_9 = tmp_qloop_18*(((jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86)*(jac_affine_inv_0_0_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_80 - tmp_qloop_86))*16.0 + ((jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88)*(jac_affine_inv_0_1_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_82 - tmp_qloop_88))*16.0 + ((jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90)*(jac_affine_inv_0_2_GREEN_DOWN*tmp_qloop_67*0.25 - tmp_qloop_84 - tmp_qloop_90))*16.0);
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -3174,110 +3174,110 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
                 q_acc_8_9 = q_acc_8_9 + q_tmp_8_9;
                 q_acc_9_9 = q_acc_9_9 + q_tmp_9_9;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_0_4 = q_acc_0_4;
-             const real_t elMat_0_5 = q_acc_0_5;
-             const real_t elMat_0_6 = q_acc_0_6;
-             const real_t elMat_0_7 = q_acc_0_7;
-             const real_t elMat_0_8 = q_acc_0_8;
-             const real_t elMat_0_9 = q_acc_0_9;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_1_4 = q_acc_1_4;
-             const real_t elMat_1_5 = q_acc_1_5;
-             const real_t elMat_1_6 = q_acc_1_6;
-             const real_t elMat_1_7 = q_acc_1_7;
-             const real_t elMat_1_8 = q_acc_1_8;
-             const real_t elMat_1_9 = q_acc_1_9;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_2_4 = q_acc_2_4;
-             const real_t elMat_2_5 = q_acc_2_5;
-             const real_t elMat_2_6 = q_acc_2_6;
-             const real_t elMat_2_7 = q_acc_2_7;
-             const real_t elMat_2_8 = q_acc_2_8;
-             const real_t elMat_2_9 = q_acc_2_9;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
-             const real_t elMat_3_4 = q_acc_3_4;
-             const real_t elMat_3_5 = q_acc_3_5;
-             const real_t elMat_3_6 = q_acc_3_6;
-             const real_t elMat_3_7 = q_acc_3_7;
-             const real_t elMat_3_8 = q_acc_3_8;
-             const real_t elMat_3_9 = q_acc_3_9;
-             const real_t elMat_4_0 = q_acc_0_4;
-             const real_t elMat_4_1 = q_acc_1_4;
-             const real_t elMat_4_2 = q_acc_2_4;
-             const real_t elMat_4_3 = q_acc_3_4;
-             const real_t elMat_4_4 = q_acc_4_4;
-             const real_t elMat_4_5 = q_acc_4_5;
-             const real_t elMat_4_6 = q_acc_4_6;
-             const real_t elMat_4_7 = q_acc_4_7;
-             const real_t elMat_4_8 = q_acc_4_8;
-             const real_t elMat_4_9 = q_acc_4_9;
-             const real_t elMat_5_0 = q_acc_0_5;
-             const real_t elMat_5_1 = q_acc_1_5;
-             const real_t elMat_5_2 = q_acc_2_5;
-             const real_t elMat_5_3 = q_acc_3_5;
-             const real_t elMat_5_4 = q_acc_4_5;
-             const real_t elMat_5_5 = q_acc_5_5;
-             const real_t elMat_5_6 = q_acc_5_6;
-             const real_t elMat_5_7 = q_acc_5_7;
-             const real_t elMat_5_8 = q_acc_5_8;
-             const real_t elMat_5_9 = q_acc_5_9;
-             const real_t elMat_6_0 = q_acc_0_6;
-             const real_t elMat_6_1 = q_acc_1_6;
-             const real_t elMat_6_2 = q_acc_2_6;
-             const real_t elMat_6_3 = q_acc_3_6;
-             const real_t elMat_6_4 = q_acc_4_6;
-             const real_t elMat_6_5 = q_acc_5_6;
-             const real_t elMat_6_6 = q_acc_6_6;
-             const real_t elMat_6_7 = q_acc_6_7;
-             const real_t elMat_6_8 = q_acc_6_8;
-             const real_t elMat_6_9 = q_acc_6_9;
-             const real_t elMat_7_0 = q_acc_0_7;
-             const real_t elMat_7_1 = q_acc_1_7;
-             const real_t elMat_7_2 = q_acc_2_7;
-             const real_t elMat_7_3 = q_acc_3_7;
-             const real_t elMat_7_4 = q_acc_4_7;
-             const real_t elMat_7_5 = q_acc_5_7;
-             const real_t elMat_7_6 = q_acc_6_7;
-             const real_t elMat_7_7 = q_acc_7_7;
-             const real_t elMat_7_8 = q_acc_7_8;
-             const real_t elMat_7_9 = q_acc_7_9;
-             const real_t elMat_8_0 = q_acc_0_8;
-             const real_t elMat_8_1 = q_acc_1_8;
-             const real_t elMat_8_2 = q_acc_2_8;
-             const real_t elMat_8_3 = q_acc_3_8;
-             const real_t elMat_8_4 = q_acc_4_8;
-             const real_t elMat_8_5 = q_acc_5_8;
-             const real_t elMat_8_6 = q_acc_6_8;
-             const real_t elMat_8_7 = q_acc_7_8;
-             const real_t elMat_8_8 = q_acc_8_8;
-             const real_t elMat_8_9 = q_acc_8_9;
-             const real_t elMat_9_0 = q_acc_0_9;
-             const real_t elMat_9_1 = q_acc_1_9;
-             const real_t elMat_9_2 = q_acc_2_9;
-             const real_t elMat_9_3 = q_acc_3_9;
-             const real_t elMat_9_4 = q_acc_4_9;
-             const real_t elMat_9_5 = q_acc_5_9;
-             const real_t elMat_9_6 = q_acc_6_9;
-             const real_t elMat_9_7 = q_acc_7_9;
-             const real_t elMat_9_8 = q_acc_8_9;
-             const real_t elMat_9_9 = q_acc_9_9;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_0_4 = q_acc_0_4;
+             const walberla::float64 elMat_0_5 = q_acc_0_5;
+             const walberla::float64 elMat_0_6 = q_acc_0_6;
+             const walberla::float64 elMat_0_7 = q_acc_0_7;
+             const walberla::float64 elMat_0_8 = q_acc_0_8;
+             const walberla::float64 elMat_0_9 = q_acc_0_9;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_1_4 = q_acc_1_4;
+             const walberla::float64 elMat_1_5 = q_acc_1_5;
+             const walberla::float64 elMat_1_6 = q_acc_1_6;
+             const walberla::float64 elMat_1_7 = q_acc_1_7;
+             const walberla::float64 elMat_1_8 = q_acc_1_8;
+             const walberla::float64 elMat_1_9 = q_acc_1_9;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_2_4 = q_acc_2_4;
+             const walberla::float64 elMat_2_5 = q_acc_2_5;
+             const walberla::float64 elMat_2_6 = q_acc_2_6;
+             const walberla::float64 elMat_2_7 = q_acc_2_7;
+             const walberla::float64 elMat_2_8 = q_acc_2_8;
+             const walberla::float64 elMat_2_9 = q_acc_2_9;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_3_4 = q_acc_3_4;
+             const walberla::float64 elMat_3_5 = q_acc_3_5;
+             const walberla::float64 elMat_3_6 = q_acc_3_6;
+             const walberla::float64 elMat_3_7 = q_acc_3_7;
+             const walberla::float64 elMat_3_8 = q_acc_3_8;
+             const walberla::float64 elMat_3_9 = q_acc_3_9;
+             const walberla::float64 elMat_4_0 = q_acc_0_4;
+             const walberla::float64 elMat_4_1 = q_acc_1_4;
+             const walberla::float64 elMat_4_2 = q_acc_2_4;
+             const walberla::float64 elMat_4_3 = q_acc_3_4;
+             const walberla::float64 elMat_4_4 = q_acc_4_4;
+             const walberla::float64 elMat_4_5 = q_acc_4_5;
+             const walberla::float64 elMat_4_6 = q_acc_4_6;
+             const walberla::float64 elMat_4_7 = q_acc_4_7;
+             const walberla::float64 elMat_4_8 = q_acc_4_8;
+             const walberla::float64 elMat_4_9 = q_acc_4_9;
+             const walberla::float64 elMat_5_0 = q_acc_0_5;
+             const walberla::float64 elMat_5_1 = q_acc_1_5;
+             const walberla::float64 elMat_5_2 = q_acc_2_5;
+             const walberla::float64 elMat_5_3 = q_acc_3_5;
+             const walberla::float64 elMat_5_4 = q_acc_4_5;
+             const walberla::float64 elMat_5_5 = q_acc_5_5;
+             const walberla::float64 elMat_5_6 = q_acc_5_6;
+             const walberla::float64 elMat_5_7 = q_acc_5_7;
+             const walberla::float64 elMat_5_8 = q_acc_5_8;
+             const walberla::float64 elMat_5_9 = q_acc_5_9;
+             const walberla::float64 elMat_6_0 = q_acc_0_6;
+             const walberla::float64 elMat_6_1 = q_acc_1_6;
+             const walberla::float64 elMat_6_2 = q_acc_2_6;
+             const walberla::float64 elMat_6_3 = q_acc_3_6;
+             const walberla::float64 elMat_6_4 = q_acc_4_6;
+             const walberla::float64 elMat_6_5 = q_acc_5_6;
+             const walberla::float64 elMat_6_6 = q_acc_6_6;
+             const walberla::float64 elMat_6_7 = q_acc_6_7;
+             const walberla::float64 elMat_6_8 = q_acc_6_8;
+             const walberla::float64 elMat_6_9 = q_acc_6_9;
+             const walberla::float64 elMat_7_0 = q_acc_0_7;
+             const walberla::float64 elMat_7_1 = q_acc_1_7;
+             const walberla::float64 elMat_7_2 = q_acc_2_7;
+             const walberla::float64 elMat_7_3 = q_acc_3_7;
+             const walberla::float64 elMat_7_4 = q_acc_4_7;
+             const walberla::float64 elMat_7_5 = q_acc_5_7;
+             const walberla::float64 elMat_7_6 = q_acc_6_7;
+             const walberla::float64 elMat_7_7 = q_acc_7_7;
+             const walberla::float64 elMat_7_8 = q_acc_7_8;
+             const walberla::float64 elMat_7_9 = q_acc_7_9;
+             const walberla::float64 elMat_8_0 = q_acc_0_8;
+             const walberla::float64 elMat_8_1 = q_acc_1_8;
+             const walberla::float64 elMat_8_2 = q_acc_2_8;
+             const walberla::float64 elMat_8_3 = q_acc_3_8;
+             const walberla::float64 elMat_8_4 = q_acc_4_8;
+             const walberla::float64 elMat_8_5 = q_acc_5_8;
+             const walberla::float64 elMat_8_6 = q_acc_6_8;
+             const walberla::float64 elMat_8_7 = q_acc_7_8;
+             const walberla::float64 elMat_8_8 = q_acc_8_8;
+             const walberla::float64 elMat_8_9 = q_acc_8_9;
+             const walberla::float64 elMat_9_0 = q_acc_0_9;
+             const walberla::float64 elMat_9_1 = q_acc_1_9;
+             const walberla::float64 elMat_9_2 = q_acc_2_9;
+             const walberla::float64 elMat_9_3 = q_acc_3_9;
+             const walberla::float64 elMat_9_4 = q_acc_4_9;
+             const walberla::float64 elMat_9_5 = q_acc_5_9;
+             const walberla::float64 elMat_9_6 = q_acc_6_9;
+             const walberla::float64 elMat_9_7 = q_acc_7_9;
+             const walberla::float64 elMat_9_8 = q_acc_8_9;
+             const walberla::float64 elMat_9_9 = q_acc_9_9;
          
              std::vector< uint_t > _data_rowIdx( 10 );
              std::vector< uint_t > _data_colIdx( 10 );
-             std::vector< real_t > _data_mat( 100 );
+             std::vector< walberla::float64 > _data_mat( 100 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dstVertex[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -3304,106 +3304,106 @@ void P2ElementwiseDivKGrad::toMatrix_macro_3D( idx_t * RESTRICT  _data_dstEdge,
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_0_4));
-             _data_mat[5] = ((real_t)(elMat_0_5));
-             _data_mat[6] = ((real_t)(elMat_0_6));
-             _data_mat[7] = ((real_t)(elMat_0_7));
-             _data_mat[8] = ((real_t)(elMat_0_8));
-             _data_mat[9] = ((real_t)(elMat_0_9));
-             _data_mat[10] = ((real_t)(elMat_1_0));
-             _data_mat[11] = ((real_t)(elMat_1_1));
-             _data_mat[12] = ((real_t)(elMat_1_2));
-             _data_mat[13] = ((real_t)(elMat_1_3));
-             _data_mat[14] = ((real_t)(elMat_1_4));
-             _data_mat[15] = ((real_t)(elMat_1_5));
-             _data_mat[16] = ((real_t)(elMat_1_6));
-             _data_mat[17] = ((real_t)(elMat_1_7));
-             _data_mat[18] = ((real_t)(elMat_1_8));
-             _data_mat[19] = ((real_t)(elMat_1_9));
-             _data_mat[20] = ((real_t)(elMat_2_0));
-             _data_mat[21] = ((real_t)(elMat_2_1));
-             _data_mat[22] = ((real_t)(elMat_2_2));
-             _data_mat[23] = ((real_t)(elMat_2_3));
-             _data_mat[24] = ((real_t)(elMat_2_4));
-             _data_mat[25] = ((real_t)(elMat_2_5));
-             _data_mat[26] = ((real_t)(elMat_2_6));
-             _data_mat[27] = ((real_t)(elMat_2_7));
-             _data_mat[28] = ((real_t)(elMat_2_8));
-             _data_mat[29] = ((real_t)(elMat_2_9));
-             _data_mat[30] = ((real_t)(elMat_3_0));
-             _data_mat[31] = ((real_t)(elMat_3_1));
-             _data_mat[32] = ((real_t)(elMat_3_2));
-             _data_mat[33] = ((real_t)(elMat_3_3));
-             _data_mat[34] = ((real_t)(elMat_3_4));
-             _data_mat[35] = ((real_t)(elMat_3_5));
-             _data_mat[36] = ((real_t)(elMat_3_6));
-             _data_mat[37] = ((real_t)(elMat_3_7));
-             _data_mat[38] = ((real_t)(elMat_3_8));
-             _data_mat[39] = ((real_t)(elMat_3_9));
-             _data_mat[40] = ((real_t)(elMat_4_0));
-             _data_mat[41] = ((real_t)(elMat_4_1));
-             _data_mat[42] = ((real_t)(elMat_4_2));
-             _data_mat[43] = ((real_t)(elMat_4_3));
-             _data_mat[44] = ((real_t)(elMat_4_4));
-             _data_mat[45] = ((real_t)(elMat_4_5));
-             _data_mat[46] = ((real_t)(elMat_4_6));
-             _data_mat[47] = ((real_t)(elMat_4_7));
-             _data_mat[48] = ((real_t)(elMat_4_8));
-             _data_mat[49] = ((real_t)(elMat_4_9));
-             _data_mat[50] = ((real_t)(elMat_5_0));
-             _data_mat[51] = ((real_t)(elMat_5_1));
-             _data_mat[52] = ((real_t)(elMat_5_2));
-             _data_mat[53] = ((real_t)(elMat_5_3));
-             _data_mat[54] = ((real_t)(elMat_5_4));
-             _data_mat[55] = ((real_t)(elMat_5_5));
-             _data_mat[56] = ((real_t)(elMat_5_6));
-             _data_mat[57] = ((real_t)(elMat_5_7));
-             _data_mat[58] = ((real_t)(elMat_5_8));
-             _data_mat[59] = ((real_t)(elMat_5_9));
-             _data_mat[60] = ((real_t)(elMat_6_0));
-             _data_mat[61] = ((real_t)(elMat_6_1));
-             _data_mat[62] = ((real_t)(elMat_6_2));
-             _data_mat[63] = ((real_t)(elMat_6_3));
-             _data_mat[64] = ((real_t)(elMat_6_4));
-             _data_mat[65] = ((real_t)(elMat_6_5));
-             _data_mat[66] = ((real_t)(elMat_6_6));
-             _data_mat[67] = ((real_t)(elMat_6_7));
-             _data_mat[68] = ((real_t)(elMat_6_8));
-             _data_mat[69] = ((real_t)(elMat_6_9));
-             _data_mat[70] = ((real_t)(elMat_7_0));
-             _data_mat[71] = ((real_t)(elMat_7_1));
-             _data_mat[72] = ((real_t)(elMat_7_2));
-             _data_mat[73] = ((real_t)(elMat_7_3));
-             _data_mat[74] = ((real_t)(elMat_7_4));
-             _data_mat[75] = ((real_t)(elMat_7_5));
-             _data_mat[76] = ((real_t)(elMat_7_6));
-             _data_mat[77] = ((real_t)(elMat_7_7));
-             _data_mat[78] = ((real_t)(elMat_7_8));
-             _data_mat[79] = ((real_t)(elMat_7_9));
-             _data_mat[80] = ((real_t)(elMat_8_0));
-             _data_mat[81] = ((real_t)(elMat_8_1));
-             _data_mat[82] = ((real_t)(elMat_8_2));
-             _data_mat[83] = ((real_t)(elMat_8_3));
-             _data_mat[84] = ((real_t)(elMat_8_4));
-             _data_mat[85] = ((real_t)(elMat_8_5));
-             _data_mat[86] = ((real_t)(elMat_8_6));
-             _data_mat[87] = ((real_t)(elMat_8_7));
-             _data_mat[88] = ((real_t)(elMat_8_8));
-             _data_mat[89] = ((real_t)(elMat_8_9));
-             _data_mat[90] = ((real_t)(elMat_9_0));
-             _data_mat[91] = ((real_t)(elMat_9_1));
-             _data_mat[92] = ((real_t)(elMat_9_2));
-             _data_mat[93] = ((real_t)(elMat_9_3));
-             _data_mat[94] = ((real_t)(elMat_9_4));
-             _data_mat[95] = ((real_t)(elMat_9_5));
-             _data_mat[96] = ((real_t)(elMat_9_6));
-             _data_mat[97] = ((real_t)(elMat_9_7));
-             _data_mat[98] = ((real_t)(elMat_9_8));
-             _data_mat[99] = ((real_t)(elMat_9_9));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_0_4));
+             _data_mat[5] = ((walberla::float64)(elMat_0_5));
+             _data_mat[6] = ((walberla::float64)(elMat_0_6));
+             _data_mat[7] = ((walberla::float64)(elMat_0_7));
+             _data_mat[8] = ((walberla::float64)(elMat_0_8));
+             _data_mat[9] = ((walberla::float64)(elMat_0_9));
+             _data_mat[10] = ((walberla::float64)(elMat_1_0));
+             _data_mat[11] = ((walberla::float64)(elMat_1_1));
+             _data_mat[12] = ((walberla::float64)(elMat_1_2));
+             _data_mat[13] = ((walberla::float64)(elMat_1_3));
+             _data_mat[14] = ((walberla::float64)(elMat_1_4));
+             _data_mat[15] = ((walberla::float64)(elMat_1_5));
+             _data_mat[16] = ((walberla::float64)(elMat_1_6));
+             _data_mat[17] = ((walberla::float64)(elMat_1_7));
+             _data_mat[18] = ((walberla::float64)(elMat_1_8));
+             _data_mat[19] = ((walberla::float64)(elMat_1_9));
+             _data_mat[20] = ((walberla::float64)(elMat_2_0));
+             _data_mat[21] = ((walberla::float64)(elMat_2_1));
+             _data_mat[22] = ((walberla::float64)(elMat_2_2));
+             _data_mat[23] = ((walberla::float64)(elMat_2_3));
+             _data_mat[24] = ((walberla::float64)(elMat_2_4));
+             _data_mat[25] = ((walberla::float64)(elMat_2_5));
+             _data_mat[26] = ((walberla::float64)(elMat_2_6));
+             _data_mat[27] = ((walberla::float64)(elMat_2_7));
+             _data_mat[28] = ((walberla::float64)(elMat_2_8));
+             _data_mat[29] = ((walberla::float64)(elMat_2_9));
+             _data_mat[30] = ((walberla::float64)(elMat_3_0));
+             _data_mat[31] = ((walberla::float64)(elMat_3_1));
+             _data_mat[32] = ((walberla::float64)(elMat_3_2));
+             _data_mat[33] = ((walberla::float64)(elMat_3_3));
+             _data_mat[34] = ((walberla::float64)(elMat_3_4));
+             _data_mat[35] = ((walberla::float64)(elMat_3_5));
+             _data_mat[36] = ((walberla::float64)(elMat_3_6));
+             _data_mat[37] = ((walberla::float64)(elMat_3_7));
+             _data_mat[38] = ((walberla::float64)(elMat_3_8));
+             _data_mat[39] = ((walberla::float64)(elMat_3_9));
+             _data_mat[40] = ((walberla::float64)(elMat_4_0));
+             _data_mat[41] = ((walberla::float64)(elMat_4_1));
+             _data_mat[42] = ((walberla::float64)(elMat_4_2));
+             _data_mat[43] = ((walberla::float64)(elMat_4_3));
+             _data_mat[44] = ((walberla::float64)(elMat_4_4));
+             _data_mat[45] = ((walberla::float64)(elMat_4_5));
+             _data_mat[46] = ((walberla::float64)(elMat_4_6));
+             _data_mat[47] = ((walberla::float64)(elMat_4_7));
+             _data_mat[48] = ((walberla::float64)(elMat_4_8));
+             _data_mat[49] = ((walberla::float64)(elMat_4_9));
+             _data_mat[50] = ((walberla::float64)(elMat_5_0));
+             _data_mat[51] = ((walberla::float64)(elMat_5_1));
+             _data_mat[52] = ((walberla::float64)(elMat_5_2));
+             _data_mat[53] = ((walberla::float64)(elMat_5_3));
+             _data_mat[54] = ((walberla::float64)(elMat_5_4));
+             _data_mat[55] = ((walberla::float64)(elMat_5_5));
+             _data_mat[56] = ((walberla::float64)(elMat_5_6));
+             _data_mat[57] = ((walberla::float64)(elMat_5_7));
+             _data_mat[58] = ((walberla::float64)(elMat_5_8));
+             _data_mat[59] = ((walberla::float64)(elMat_5_9));
+             _data_mat[60] = ((walberla::float64)(elMat_6_0));
+             _data_mat[61] = ((walberla::float64)(elMat_6_1));
+             _data_mat[62] = ((walberla::float64)(elMat_6_2));
+             _data_mat[63] = ((walberla::float64)(elMat_6_3));
+             _data_mat[64] = ((walberla::float64)(elMat_6_4));
+             _data_mat[65] = ((walberla::float64)(elMat_6_5));
+             _data_mat[66] = ((walberla::float64)(elMat_6_6));
+             _data_mat[67] = ((walberla::float64)(elMat_6_7));
+             _data_mat[68] = ((walberla::float64)(elMat_6_8));
+             _data_mat[69] = ((walberla::float64)(elMat_6_9));
+             _data_mat[70] = ((walberla::float64)(elMat_7_0));
+             _data_mat[71] = ((walberla::float64)(elMat_7_1));
+             _data_mat[72] = ((walberla::float64)(elMat_7_2));
+             _data_mat[73] = ((walberla::float64)(elMat_7_3));
+             _data_mat[74] = ((walberla::float64)(elMat_7_4));
+             _data_mat[75] = ((walberla::float64)(elMat_7_5));
+             _data_mat[76] = ((walberla::float64)(elMat_7_6));
+             _data_mat[77] = ((walberla::float64)(elMat_7_7));
+             _data_mat[78] = ((walberla::float64)(elMat_7_8));
+             _data_mat[79] = ((walberla::float64)(elMat_7_9));
+             _data_mat[80] = ((walberla::float64)(elMat_8_0));
+             _data_mat[81] = ((walberla::float64)(elMat_8_1));
+             _data_mat[82] = ((walberla::float64)(elMat_8_2));
+             _data_mat[83] = ((walberla::float64)(elMat_8_3));
+             _data_mat[84] = ((walberla::float64)(elMat_8_4));
+             _data_mat[85] = ((walberla::float64)(elMat_8_5));
+             _data_mat[86] = ((walberla::float64)(elMat_8_6));
+             _data_mat[87] = ((walberla::float64)(elMat_8_7));
+             _data_mat[88] = ((walberla::float64)(elMat_8_8));
+             _data_mat[89] = ((walberla::float64)(elMat_8_9));
+             _data_mat[90] = ((walberla::float64)(elMat_9_0));
+             _data_mat[91] = ((walberla::float64)(elMat_9_1));
+             _data_mat[92] = ((walberla::float64)(elMat_9_2));
+             _data_mat[93] = ((walberla::float64)(elMat_9_3));
+             _data_mat[94] = ((walberla::float64)(elMat_9_4));
+             _data_mat[95] = ((walberla::float64)(elMat_9_5));
+             _data_mat[96] = ((walberla::float64)(elMat_9_6));
+             _data_mat[97] = ((walberla::float64)(elMat_9_7));
+             _data_mat[98] = ((walberla::float64)(elMat_9_8));
+             _data_mat[99] = ((walberla::float64)(elMat_9_9));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/mass/CMakeLists.txt b/operators/mass/CMakeLists.txt
index 3f92e5d26dc62829fe32812bc381d9a5464fbc2a..9a363eb5eacf4b50b5d22f9a1c7b737826618bee 100644
--- a/operators/mass/CMakeLists.txt
+++ b/operators/mass/CMakeLists.txt
@@ -43,4 +43,8 @@ endif()
 if (HYTEG_BUILD_WITH_PETSC)
    target_link_libraries(opgen-mass PUBLIC PETSc::PETSc)
 endif ()
-target_compile_features(opgen-mass PUBLIC cxx_std_17)
+if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)
+    target_compile_features(opgen-mass PUBLIC cxx_std_23)
+else ()
+    target_compile_features(opgen-mass PUBLIC cxx_std_17)
+endif ()
diff --git a/operators/mass/P1ElementwiseMass.cpp b/operators/mass/P1ElementwiseMass.cpp
index fb1b7c15c7ba8bda49f7c03069f5fc35e6ea4212..17b8ce8bf1b8e9d7db6bce2584fec4f45d63ce5b 100644
--- a/operators/mass/P1ElementwiseMass.cpp
+++ b/operators/mass/P1ElementwiseMass.cpp
@@ -51,13 +51,16 @@ P1ElementwiseMass::P1ElementwiseMass( const std::shared_ptr< PrimitiveStorage >&
 : Operator( storage, minLevel, maxLevel )
 {}
 
-void P1ElementwiseMass::apply( const P1Function< real_t >& src,
-                               const P1Function< real_t >& dst,
-                               uint_t                      level,
-                               DoFType                     flag,
-                               UpdateType                  updateType ) const
+void P1ElementwiseMass::apply( const P1Function< walberla::float64 >& src,
+                               const P1Function< walberla::float64 >& dst,
+                               uint_t                                 level,
+                               DoFType                                flag,
+                               UpdateType                             updateType ) const
 {
+   this->startTiming( "apply" );
+
    // Make sure that halos are up-to-date
+   this->timingTree_->start( "pre-communication" );
    if ( this->storage_->hasGlobalCells() )
    {
       // Note that the order of communication is important, since the face -> cell communication may overwrite
@@ -70,6 +73,7 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
    {
       communication::syncFunctionBetweenPrimitives( src, level, communication::syncDirection_t::LOW2HIGH );
    }
+   this->timingTree_->stop( "pre-communication" );
 
    if ( updateType == Replace )
    {
@@ -77,7 +81,7 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
       // However, we must not zero out anything that is not flagged with the specified BCs.
       // Therefore, we first zero out everything that flagged, and then, later,
       // the halos of the highest dim primitives.
-      dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag );
+      dst.interpolate( walberla::numeric_cast< walberla::float64 >( 0 ), level, flag );
    }
 
    if ( storage_->hasGlobalCells() )
@@ -87,8 +91,8 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
          Cell& cell = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
-         real_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
+         walberla::float64* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -99,24 +103,26 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
             if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() )
             {
                auto arrayIdx       = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_3D(
 
@@ -136,15 +142,18 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_3comp2,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Cell, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
    else
    {
@@ -153,8 +162,8 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
          Face& face = *it.second;
 
          // get hold of the actual numerical data in the functions
-         real_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
-         real_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
+         walberla::float64* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
 
          // Zero out dst halos only
          //
@@ -165,18 +174,20 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
             if ( vertexdof::macroface::isVertexOnBoundary( level, idx ) )
             {
                auto arrayIdx       = vertexdof::macroface::index( level, idx.x(), idx.y() );
-               _data_dst[arrayIdx] = real_t( 0 );
+               _data_dst[arrayIdx] = walberla::float64( 0 );
             }
          }
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          apply_macro_2D(
 
@@ -190,15 +201,20 @@ void P1ElementwiseMass::apply( const P1Function< real_t >& src,
              macro_vertex_coord_id_2comp1,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
 
       // Push result to lower-dimensional primitives
       //
+      this->timingTree_->start( "post-communication" );
       // Note: We could avoid communication here by implementing the apply() also for the respective
       //       lower dimensional primitives!
       dst.communicateAdditively< Face, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
       dst.communicateAdditively< Face, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace );
+      this->timingTree_->stop( "post-communication" );
    }
+
+   this->stopTiming( "apply" );
 }
 void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                                   const P1Function< idx_t >&                  src,
@@ -206,6 +222,8 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
                                   uint_t                                      level,
                                   DoFType                                     flag ) const
 {
+   this->startTiming( "toMatrix" );
+
    // We currently ignore the flag provided!
    if ( flag != All )
    {
@@ -214,6 +232,10 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
 
    if ( storage_->hasGlobalCells() )
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       for ( auto& it : storage_->getCells() )
       {
          Cell& cell = *it.second;
@@ -222,20 +244,22 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
          idx_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level );
          idx_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-         const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-         const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-         const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-         const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+         const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+         const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+         const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+         const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_3D(
 
@@ -256,10 +280,15 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
    else
    {
+      this->timingTree_->start( "pre-communication" );
+
+      this->timingTree_->stop( "pre-communication" );
+
       for ( auto& it : storage_->getFaces() )
       {
          Face& face = *it.second;
@@ -268,14 +297,16 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
          idx_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level );
          idx_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level );
 
-         const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-         const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-         const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-         const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-         const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-         const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-         const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-         const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+         const auto micro_edges_per_macro_edge                = (int64_t) levelinfo::num_microedges_per_edge( level );
+         const auto micro_edges_per_macro_edge_float          = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+         const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+         const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+         const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+         const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+         const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+         const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+         this->timingTree_->start( "kernel" );
 
          toMatrix_macro_2D(
 
@@ -290,14 +321,19 @@ void P1ElementwiseMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& ma
              mat,
              micro_edges_per_macro_edge,
              micro_edges_per_macro_edge_float );
+         this->timingTree_->stop( "kernel" );
       }
    }
+   this->stopTiming( "toMatrix" );
 }
 void P1ElementwiseMass::computeInverseDiagonalOperatorValues()
 {
+   this->startTiming( "computeInverseDiagonalOperatorValues" );
+
    if ( invDiag_ == nullptr )
    {
-      invDiag_ = std::make_shared< P1Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
+      invDiag_ =
+          std::make_shared< P1Function< walberla::float64 > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ );
    }
 
    for ( uint_t level = minLevel_; level <= maxLevel_; level++ )
@@ -306,27 +342,33 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues()
 
       if ( storage_->hasGlobalCells() )
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          for ( auto& it : storage_->getCells() )
          {
             Cell& cell = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
-
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) cell.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) cell.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_0comp2     = (real_t) cell.getCoordinates()[0][2];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) cell.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) cell.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_1comp2     = (real_t) cell.getCoordinates()[1][2];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) cell.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) cell.getCoordinates()[2][1];
-            const real_t macro_vertex_coord_id_2comp2     = (real_t) cell.getCoordinates()[2][2];
-            const real_t macro_vertex_coord_id_3comp0     = (real_t) cell.getCoordinates()[3][0];
-            const real_t macro_vertex_coord_id_3comp1     = (real_t) cell.getCoordinates()[3][1];
-            const real_t macro_vertex_coord_id_3comp2     = (real_t) cell.getCoordinates()[3][2];
+            walberla::float64* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level );
+
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) cell.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) cell.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_0comp2 = (walberla::float64) cell.getCoordinates()[0][2];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) cell.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) cell.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_1comp2 = (walberla::float64) cell.getCoordinates()[1][2];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) cell.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) cell.getCoordinates()[2][1];
+            const walberla::float64 macro_vertex_coord_id_2comp2 = (walberla::float64) cell.getCoordinates()[2][2];
+            const walberla::float64 macro_vertex_coord_id_3comp0 = (walberla::float64) cell.getCoordinates()[3][0];
+            const walberla::float64 macro_vertex_coord_id_3comp1 = (walberla::float64) cell.getCoordinates()[3][1];
+            const walberla::float64 macro_vertex_coord_id_3comp2 = (walberla::float64) cell.getCoordinates()[3][2];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_3D(
 
@@ -345,33 +387,42 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_3comp2,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Cell, Face >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Cell, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
       else
       {
+         this->timingTree_->start( "pre-communication" );
+
+         this->timingTree_->stop( "pre-communication" );
+
          for ( auto& it : storage_->getFaces() )
          {
             Face& face = *it.second;
 
             // get hold of the actual numerical data
-            real_t* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
+            walberla::float64* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level );
 
-            const auto   micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
-            const auto   micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level );
-            const real_t macro_vertex_coord_id_0comp0     = (real_t) face.getCoordinates()[0][0];
-            const real_t macro_vertex_coord_id_0comp1     = (real_t) face.getCoordinates()[0][1];
-            const real_t macro_vertex_coord_id_1comp0     = (real_t) face.getCoordinates()[1][0];
-            const real_t macro_vertex_coord_id_1comp1     = (real_t) face.getCoordinates()[1][1];
-            const real_t macro_vertex_coord_id_2comp0     = (real_t) face.getCoordinates()[2][0];
-            const real_t macro_vertex_coord_id_2comp1     = (real_t) face.getCoordinates()[2][1];
+            const auto micro_edges_per_macro_edge       = (int64_t) levelinfo::num_microedges_per_edge( level );
+            const auto micro_edges_per_macro_edge_float = (walberla::float64) levelinfo::num_microedges_per_edge( level );
+            const walberla::float64 macro_vertex_coord_id_0comp0 = (walberla::float64) face.getCoordinates()[0][0];
+            const walberla::float64 macro_vertex_coord_id_0comp1 = (walberla::float64) face.getCoordinates()[0][1];
+            const walberla::float64 macro_vertex_coord_id_1comp0 = (walberla::float64) face.getCoordinates()[1][0];
+            const walberla::float64 macro_vertex_coord_id_1comp1 = (walberla::float64) face.getCoordinates()[1][1];
+            const walberla::float64 macro_vertex_coord_id_2comp0 = (walberla::float64) face.getCoordinates()[2][0];
+            const walberla::float64 macro_vertex_coord_id_2comp1 = (walberla::float64) face.getCoordinates()[2][1];
+
+            this->timingTree_->start( "kernel" );
 
             computeInverseDiagonalOperatorValues_macro_2D(
 
@@ -384,20 +435,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues()
                 macro_vertex_coord_id_2comp1,
                 micro_edges_per_macro_edge,
                 micro_edges_per_macro_edge_float );
+            this->timingTree_->stop( "kernel" );
          }
 
          // Push result to lower-dimensional primitives
          //
+         this->timingTree_->start( "post-communication" );
          // Note: We could avoid communication here by implementing the apply() also for the respective
          //       lower dimensional primitives!
          ( *invDiag_ ).communicateAdditively< Face, Edge >( level );
          ( *invDiag_ ).communicateAdditively< Face, Vertex >( level );
+         this->timingTree_->stop( "post-communication" );
       }
 
       ( *invDiag_ ).invertElementwise( level );
    }
+
+   this->stopTiming( "computeInverseDiagonalOperatorValues" );
 }
-std::shared_ptr< P1Function< real_t > > P1ElementwiseMass::getInverseDiagonalValues() const
+std::shared_ptr< P1Function< walberla::float64 > > P1ElementwiseMass::getInverseDiagonalValues() const
 {
    return invDiag_;
 }
diff --git a/operators/mass/P1ElementwiseMass.hpp b/operators/mass/P1ElementwiseMass.hpp
index 9f3498392509eb17dbe0073a3ed627826cd206d6..59b260fbab46e4d25cdc79807a5a256b3c3129fe 100644
--- a/operators/mass/P1ElementwiseMass.hpp
+++ b/operators/mass/P1ElementwiseMass.hpp
@@ -43,17 +43,28 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-class P1ElementwiseMass : public Operator< P1Function< real_t >, P1Function< real_t > >,
-                          public OperatorWithInverseDiagonal< P1Function< real_t > >
+/// Mass operator.
+///
+/// Geometry map: IdentityMap
+///
+/// Weak formulation
+///
+///     u: trial function (space: Lagrange, degree: 1)
+///     v: test function  (space: Lagrange, degree: 1)
+///
+///     ∫ uv
+
+class P1ElementwiseMass : public Operator< P1Function< walberla::float64 >, P1Function< walberla::float64 > >,
+                          public OperatorWithInverseDiagonal< P1Function< walberla::float64 > >
 {
  public:
    P1ElementwiseMass( const std::shared_ptr< PrimitiveStorage >& storage, size_t minLevel, size_t maxLevel );
 
-   void apply( const P1Function< real_t >& src,
-               const P1Function< real_t >& dst,
-               uint_t                      level,
-               DoFType                     flag,
-               UpdateType                  updateType = Replace ) const;
+   void apply( const P1Function< walberla::float64 >& src,
+               const P1Function< walberla::float64 >& dst,
+               uint_t                                 level,
+               DoFType                                flag,
+               UpdateType                             updateType = Replace ) const;
 
    void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat,
                   const P1Function< idx_t >&                  src,
@@ -63,126 +74,126 @@ class P1ElementwiseMass : public Operator< P1Function< real_t >, P1Function< rea
 
    void computeInverseDiagonalOperatorValues();
 
-   std::shared_ptr< P1Function< real_t > > getInverseDiagonalValues() const;
+   std::shared_ptr< P1Function< walberla::float64 > > getInverseDiagonalValues() const;
 
  protected:
  private:
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     27      27       0       0      0              0                 0              0
-   void apply_macro_2D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_2D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: apply
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     56      56       0       0      0              0                 0              0
-   void apply_macro_3D( real_t* RESTRICT _data_dst,
-                        real_t* RESTRICT _data_src,
-                        real_t           macro_vertex_coord_id_0comp0,
-                        real_t           macro_vertex_coord_id_0comp1,
-                        real_t           macro_vertex_coord_id_0comp2,
-                        real_t           macro_vertex_coord_id_1comp0,
-                        real_t           macro_vertex_coord_id_1comp1,
-                        real_t           macro_vertex_coord_id_1comp2,
-                        real_t           macro_vertex_coord_id_2comp0,
-                        real_t           macro_vertex_coord_id_2comp1,
-                        real_t           macro_vertex_coord_id_2comp2,
-                        real_t           macro_vertex_coord_id_3comp0,
-                        real_t           macro_vertex_coord_id_3comp1,
-                        real_t           macro_vertex_coord_id_3comp2,
-                        int64_t          micro_edges_per_macro_edge,
-                        real_t           micro_edges_per_macro_edge_float ) const;
+   void apply_macro_3D( walberla::float64* RESTRICT _data_dst,
+                        walberla::float64* RESTRICT _data_src,
+                        walberla::float64           macro_vertex_coord_id_0comp0,
+                        walberla::float64           macro_vertex_coord_id_0comp1,
+                        walberla::float64           macro_vertex_coord_id_0comp2,
+                        walberla::float64           macro_vertex_coord_id_1comp0,
+                        walberla::float64           macro_vertex_coord_id_1comp1,
+                        walberla::float64           macro_vertex_coord_id_1comp2,
+                        walberla::float64           macro_vertex_coord_id_2comp0,
+                        walberla::float64           macro_vertex_coord_id_2comp1,
+                        walberla::float64           macro_vertex_coord_id_2comp2,
+                        walberla::float64           macro_vertex_coord_id_3comp0,
+                        walberla::float64           macro_vertex_coord_id_3comp1,
+                        walberla::float64           macro_vertex_coord_id_3comp2,
+                        int64_t                     micro_edges_per_macro_edge,
+                        walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     18      18       0       0      0              0                 0              3
    void toMatrix_macro_2D( idx_t* RESTRICT                      _data_dst,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: toMatrix
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     40      40       0       0      0              0                 0              3
    void toMatrix_macro_3D( idx_t* RESTRICT                      _data_dst,
                            idx_t* RESTRICT                      _data_src,
-                           real_t                               macro_vertex_coord_id_0comp0,
-                           real_t                               macro_vertex_coord_id_0comp1,
-                           real_t                               macro_vertex_coord_id_0comp2,
-                           real_t                               macro_vertex_coord_id_1comp0,
-                           real_t                               macro_vertex_coord_id_1comp1,
-                           real_t                               macro_vertex_coord_id_1comp2,
-                           real_t                               macro_vertex_coord_id_2comp0,
-                           real_t                               macro_vertex_coord_id_2comp1,
-                           real_t                               macro_vertex_coord_id_2comp2,
-                           real_t                               macro_vertex_coord_id_3comp0,
-                           real_t                               macro_vertex_coord_id_3comp1,
-                           real_t                               macro_vertex_coord_id_3comp2,
+                           walberla::float64                    macro_vertex_coord_id_0comp0,
+                           walberla::float64                    macro_vertex_coord_id_0comp1,
+                           walberla::float64                    macro_vertex_coord_id_0comp2,
+                           walberla::float64                    macro_vertex_coord_id_1comp0,
+                           walberla::float64                    macro_vertex_coord_id_1comp1,
+                           walberla::float64                    macro_vertex_coord_id_1comp2,
+                           walberla::float64                    macro_vertex_coord_id_2comp0,
+                           walberla::float64                    macro_vertex_coord_id_2comp1,
+                           walberla::float64                    macro_vertex_coord_id_2comp2,
+                           walberla::float64                    macro_vertex_coord_id_3comp0,
+                           walberla::float64                    macro_vertex_coord_id_3comp1,
+                           walberla::float64                    macro_vertex_coord_id_3comp2,
                            std::shared_ptr< SparseMatrixProxy > mat,
                            int64_t                              micro_edges_per_macro_edge,
-                           real_t                               micro_edges_per_macro_edge_float ) const;
+                           walberla::float64                    micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 3, degree: 2
+   /// - quadrature rule: Dunavant 2 | points: 3, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     12       9       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_2D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
+   void computeInverseDiagonalOperatorValues_macro_2D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
    /// Kernel type: computeInverseDiagonalOperatorValues
-   /// - quadrature rule: Xiao-Gimbutas | points: 4, degree: 2
+   /// - quadrature rule: Hammer-Marlowe-Stroud 1 | points: 4, degree: 2
    /// - operations per element:
    ///   adds    muls    divs    pows    abs    assignments    function_calls    unknown_ops
    /// ------  ------  ------  ------  -----  -------------  ----------------  -------------
    ///     20      16       0       0      0              0                 0              0
-   void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_,
-                                                       real_t           macro_vertex_coord_id_0comp0,
-                                                       real_t           macro_vertex_coord_id_0comp1,
-                                                       real_t           macro_vertex_coord_id_0comp2,
-                                                       real_t           macro_vertex_coord_id_1comp0,
-                                                       real_t           macro_vertex_coord_id_1comp1,
-                                                       real_t           macro_vertex_coord_id_1comp2,
-                                                       real_t           macro_vertex_coord_id_2comp0,
-                                                       real_t           macro_vertex_coord_id_2comp1,
-                                                       real_t           macro_vertex_coord_id_2comp2,
-                                                       real_t           macro_vertex_coord_id_3comp0,
-                                                       real_t           macro_vertex_coord_id_3comp1,
-                                                       real_t           macro_vertex_coord_id_3comp2,
-                                                       int64_t          micro_edges_per_macro_edge,
-                                                       real_t           micro_edges_per_macro_edge_float ) const;
-
-   std::shared_ptr< P1Function< real_t > > invDiag_;
+   void computeInverseDiagonalOperatorValues_macro_3D( walberla::float64* RESTRICT _data_invDiag_,
+                                                       walberla::float64           macro_vertex_coord_id_0comp0,
+                                                       walberla::float64           macro_vertex_coord_id_0comp1,
+                                                       walberla::float64           macro_vertex_coord_id_0comp2,
+                                                       walberla::float64           macro_vertex_coord_id_1comp0,
+                                                       walberla::float64           macro_vertex_coord_id_1comp1,
+                                                       walberla::float64           macro_vertex_coord_id_1comp2,
+                                                       walberla::float64           macro_vertex_coord_id_2comp0,
+                                                       walberla::float64           macro_vertex_coord_id_2comp1,
+                                                       walberla::float64           macro_vertex_coord_id_2comp2,
+                                                       walberla::float64           macro_vertex_coord_id_3comp0,
+                                                       walberla::float64           macro_vertex_coord_id_3comp1,
+                                                       walberla::float64           macro_vertex_coord_id_3comp2,
+                                                       int64_t                     micro_edges_per_macro_edge,
+                                                       walberla::float64           micro_edges_per_macro_edge_float ) const;
+
+   std::shared_ptr< P1Function< walberla::float64 > > invDiag_;
 };
 
 } // namespace operatorgeneration
diff --git a/operators/mass/avx/P1ElementwiseMass_apply_macro_2D.cpp b/operators/mass/avx/P1ElementwiseMass_apply_macro_2D.cpp
index 843b8e28be735ad742ee5aaab68befdb1de316f5..1db9cf9ad152f30ba939b682f6d9b3ca7e7354bf 100644
--- a/operators/mass/avx/P1ElementwiseMass_apply_macro_2D.cpp
+++ b/operators/mass/avx/P1ElementwiseMass_apply_macro_2D.cpp
@@ -56,26 +56,26 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
        {
           /* FaceType.GRAY */
-          const real_t _data_phi_psi_det_jac_aff_0_GRAY [] = {abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.11111111111111108, abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777728, abs_det_jac_affine_GRAY*0.027777777777777748, abs_det_jac_affine_GRAY*0.11111111111111105, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GRAY [] = {abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.02777777777777779, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.027777777777777794, abs_det_jac_affine_GRAY*0.11111111111111113, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           {
@@ -92,12 +92,12 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -114,23 +114,23 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -138,34 +138,34 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
        {
           /* FaceType.BLUE */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE [] = {abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.11111111111111108, abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777728, abs_det_jac_affine_BLUE*0.027777777777777748, abs_det_jac_affine_BLUE*0.11111111111111105, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE [] = {abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.02777777777777779, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.027777777777777794, abs_det_jac_affine_BLUE*0.11111111111111113, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           {
@@ -182,12 +182,12 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -204,23 +204,23 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -228,9 +228,9 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
                 _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/mass/avx/P1ElementwiseMass_apply_macro_3D.cpp b/operators/mass/avx/P1ElementwiseMass_apply_macro_3D.cpp
index 34329d0942d5c4a23f0bf55250e3718eb546d1b6..d01e0bffb03adc8f051ceeb7d0c4f61a5c9fddae 100644
--- a/operators/mass/avx/P1ElementwiseMass_apply_macro_3D.cpp
+++ b/operators/mass/avx/P1ElementwiseMass_apply_macro_3D.cpp
@@ -56,37 +56,37 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
        {
           /* CellType.WHITE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.20046443821120821, abs_det_jac_affine_WHITE_UP*0.080605154129423817, abs_det_jac_affine_WHITE_UP*0.16356320182856121, abs_det_jac_affine_WHITE_UP*0.0030997579321792282, abs_det_jac_affine_WHITE_UP*0.032410690545436126, abs_det_jac_affine_WHITE_UP*0.065767460857085305, abs_det_jac_affine_WHITE_UP*0.0012463879784202093, abs_det_jac_affine_WHITE_UP*0.13345469765676804, abs_det_jac_affine_WHITE_UP*0.002529158472220073, abs_det_jac_affine_WHITE_UP*4.793119080794062e-5, abs_det_jac_affine_WHITE_UP*2.3424983832091605e-5, abs_det_jac_affine_WHITE_UP*0.00075470637742922845, abs_det_jac_affine_WHITE_UP*0.0022140849621758063, abs_det_jac_affine_WHITE_UP*0.0018477200224347493, abs_det_jac_affine_WHITE_UP*0.024315138068613611, abs_det_jac_affine_WHITE_UP*0.071333412782766975, abs_det_jac_affine_WHITE_UP*0.059529863270376029, abs_det_jac_affine_WHITE_UP*0.20927110365887197, abs_det_jac_affine_WHITE_UP*0.17464298568178085, abs_det_jac_affine_WHITE_UP*0.14574478709475508, abs_det_jac_affine_WHITE_UP*0.12450054579698165, abs_det_jac_affine_WHITE_UP*0.076241779079863126, abs_det_jac_affine_WHITE_UP*0.00013249910677232994, abs_det_jac_affine_WHITE_UP*0.15197152472496969, abs_det_jac_affine_WHITE_UP*0.046689023249274604, abs_det_jac_affine_WHITE_UP*8.1139946513070487e-5, abs_det_jac_affine_WHITE_UP*0.093064486909197122, abs_det_jac_affine_WHITE_UP*1.4101153680155925e-7, abs_det_jac_affine_WHITE_UP*0.00016173496390708763, abs_det_jac_affine_WHITE_UP*0.18550396047976195, abs_det_jac_affine_WHITE_UP*0.00021985802016328927, abs_det_jac_affine_WHITE_UP*0.012181957275462504, abs_det_jac_affine_WHITE_UP*0.0018336830929379926, abs_det_jac_affine_WHITE_UP*0.00059211167385993745, abs_det_jac_affine_WHITE_UP*0.67498144007199112, abs_det_jac_affine_WHITE_UP*0.10160124737918669, abs_det_jac_affine_WHITE_UP*0.032807896240979378, abs_det_jac_affine_WHITE_UP*0.015293477503478755, abs_det_jac_affine_WHITE_UP*0.0049383923528547903, abs_det_jac_affine_WHITE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.080901699437494742, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -109,16 +109,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -141,32 +141,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -178,10 +178,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -189,44 +189,44 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.20046443821120821, abs_det_jac_affine_WHITE_DOWN*0.080605154129423817, abs_det_jac_affine_WHITE_DOWN*0.16356320182856121, abs_det_jac_affine_WHITE_DOWN*0.0030997579321792282, abs_det_jac_affine_WHITE_DOWN*0.032410690545436126, abs_det_jac_affine_WHITE_DOWN*0.065767460857085305, abs_det_jac_affine_WHITE_DOWN*0.0012463879784202093, abs_det_jac_affine_WHITE_DOWN*0.13345469765676804, abs_det_jac_affine_WHITE_DOWN*0.002529158472220073, abs_det_jac_affine_WHITE_DOWN*4.793119080794062e-5, abs_det_jac_affine_WHITE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_WHITE_DOWN*0.00075470637742922845, abs_det_jac_affine_WHITE_DOWN*0.0022140849621758063, abs_det_jac_affine_WHITE_DOWN*0.0018477200224347493, abs_det_jac_affine_WHITE_DOWN*0.024315138068613611, abs_det_jac_affine_WHITE_DOWN*0.071333412782766975, abs_det_jac_affine_WHITE_DOWN*0.059529863270376029, abs_det_jac_affine_WHITE_DOWN*0.20927110365887197, abs_det_jac_affine_WHITE_DOWN*0.17464298568178085, abs_det_jac_affine_WHITE_DOWN*0.14574478709475508, abs_det_jac_affine_WHITE_DOWN*0.12450054579698165, abs_det_jac_affine_WHITE_DOWN*0.076241779079863126, abs_det_jac_affine_WHITE_DOWN*0.00013249910677232994, abs_det_jac_affine_WHITE_DOWN*0.15197152472496969, abs_det_jac_affine_WHITE_DOWN*0.046689023249274604, abs_det_jac_affine_WHITE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_WHITE_DOWN*0.093064486909197122, abs_det_jac_affine_WHITE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_WHITE_DOWN*0.00016173496390708763, abs_det_jac_affine_WHITE_DOWN*0.18550396047976195, abs_det_jac_affine_WHITE_DOWN*0.00021985802016328927, abs_det_jac_affine_WHITE_DOWN*0.012181957275462504, abs_det_jac_affine_WHITE_DOWN*0.0018336830929379926, abs_det_jac_affine_WHITE_DOWN*0.00059211167385993745, abs_det_jac_affine_WHITE_DOWN*0.67498144007199112, abs_det_jac_affine_WHITE_DOWN*0.10160124737918669, abs_det_jac_affine_WHITE_DOWN*0.032807896240979378, abs_det_jac_affine_WHITE_DOWN*0.015293477503478755, abs_det_jac_affine_WHITE_DOWN*0.0049383923528547903, abs_det_jac_affine_WHITE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.080901699437494742, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -249,16 +249,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -281,32 +281,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -318,10 +318,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -329,38 +329,38 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
        {
           /* CellType.BLUE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.20046443821120821, abs_det_jac_affine_BLUE_UP*0.080605154129423817, abs_det_jac_affine_BLUE_UP*0.16356320182856121, abs_det_jac_affine_BLUE_UP*0.0030997579321792282, abs_det_jac_affine_BLUE_UP*0.032410690545436126, abs_det_jac_affine_BLUE_UP*0.065767460857085305, abs_det_jac_affine_BLUE_UP*0.0012463879784202093, abs_det_jac_affine_BLUE_UP*0.13345469765676804, abs_det_jac_affine_BLUE_UP*0.002529158472220073, abs_det_jac_affine_BLUE_UP*4.793119080794062e-5, abs_det_jac_affine_BLUE_UP*2.3424983832091605e-5, abs_det_jac_affine_BLUE_UP*0.00075470637742922845, abs_det_jac_affine_BLUE_UP*0.0022140849621758063, abs_det_jac_affine_BLUE_UP*0.0018477200224347493, abs_det_jac_affine_BLUE_UP*0.024315138068613611, abs_det_jac_affine_BLUE_UP*0.071333412782766975, abs_det_jac_affine_BLUE_UP*0.059529863270376029, abs_det_jac_affine_BLUE_UP*0.20927110365887197, abs_det_jac_affine_BLUE_UP*0.17464298568178085, abs_det_jac_affine_BLUE_UP*0.14574478709475508, abs_det_jac_affine_BLUE_UP*0.12450054579698165, abs_det_jac_affine_BLUE_UP*0.076241779079863126, abs_det_jac_affine_BLUE_UP*0.00013249910677232994, abs_det_jac_affine_BLUE_UP*0.15197152472496969, abs_det_jac_affine_BLUE_UP*0.046689023249274604, abs_det_jac_affine_BLUE_UP*8.1139946513070487e-5, abs_det_jac_affine_BLUE_UP*0.093064486909197122, abs_det_jac_affine_BLUE_UP*1.4101153680155925e-7, abs_det_jac_affine_BLUE_UP*0.00016173496390708763, abs_det_jac_affine_BLUE_UP*0.18550396047976195, abs_det_jac_affine_BLUE_UP*0.00021985802016328927, abs_det_jac_affine_BLUE_UP*0.012181957275462504, abs_det_jac_affine_BLUE_UP*0.0018336830929379926, abs_det_jac_affine_BLUE_UP*0.00059211167385993745, abs_det_jac_affine_BLUE_UP*0.67498144007199112, abs_det_jac_affine_BLUE_UP*0.10160124737918669, abs_det_jac_affine_BLUE_UP*0.032807896240979378, abs_det_jac_affine_BLUE_UP*0.015293477503478755, abs_det_jac_affine_BLUE_UP*0.0049383923528547903, abs_det_jac_affine_BLUE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.080901699437494742, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -383,16 +383,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -415,32 +415,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -452,10 +452,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -463,41 +463,41 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.20046443821120821, abs_det_jac_affine_BLUE_DOWN*0.080605154129423817, abs_det_jac_affine_BLUE_DOWN*0.16356320182856121, abs_det_jac_affine_BLUE_DOWN*0.0030997579321792282, abs_det_jac_affine_BLUE_DOWN*0.032410690545436126, abs_det_jac_affine_BLUE_DOWN*0.065767460857085305, abs_det_jac_affine_BLUE_DOWN*0.0012463879784202093, abs_det_jac_affine_BLUE_DOWN*0.13345469765676804, abs_det_jac_affine_BLUE_DOWN*0.002529158472220073, abs_det_jac_affine_BLUE_DOWN*4.793119080794062e-5, abs_det_jac_affine_BLUE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_BLUE_DOWN*0.00075470637742922845, abs_det_jac_affine_BLUE_DOWN*0.0022140849621758063, abs_det_jac_affine_BLUE_DOWN*0.0018477200224347493, abs_det_jac_affine_BLUE_DOWN*0.024315138068613611, abs_det_jac_affine_BLUE_DOWN*0.071333412782766975, abs_det_jac_affine_BLUE_DOWN*0.059529863270376029, abs_det_jac_affine_BLUE_DOWN*0.20927110365887197, abs_det_jac_affine_BLUE_DOWN*0.17464298568178085, abs_det_jac_affine_BLUE_DOWN*0.14574478709475508, abs_det_jac_affine_BLUE_DOWN*0.12450054579698165, abs_det_jac_affine_BLUE_DOWN*0.076241779079863126, abs_det_jac_affine_BLUE_DOWN*0.00013249910677232994, abs_det_jac_affine_BLUE_DOWN*0.15197152472496969, abs_det_jac_affine_BLUE_DOWN*0.046689023249274604, abs_det_jac_affine_BLUE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_BLUE_DOWN*0.093064486909197122, abs_det_jac_affine_BLUE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_BLUE_DOWN*0.00016173496390708763, abs_det_jac_affine_BLUE_DOWN*0.18550396047976195, abs_det_jac_affine_BLUE_DOWN*0.00021985802016328927, abs_det_jac_affine_BLUE_DOWN*0.012181957275462504, abs_det_jac_affine_BLUE_DOWN*0.0018336830929379926, abs_det_jac_affine_BLUE_DOWN*0.00059211167385993745, abs_det_jac_affine_BLUE_DOWN*0.67498144007199112, abs_det_jac_affine_BLUE_DOWN*0.10160124737918669, abs_det_jac_affine_BLUE_DOWN*0.032807896240979378, abs_det_jac_affine_BLUE_DOWN*0.015293477503478755, abs_det_jac_affine_BLUE_DOWN*0.0049383923528547903, abs_det_jac_affine_BLUE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.080901699437494742, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -520,16 +520,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -552,32 +552,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -589,10 +589,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -600,38 +600,38 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
        {
           /* CellType.GREEN_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.20046443821120821, abs_det_jac_affine_GREEN_UP*0.080605154129423817, abs_det_jac_affine_GREEN_UP*0.16356320182856121, abs_det_jac_affine_GREEN_UP*0.0030997579321792282, abs_det_jac_affine_GREEN_UP*0.032410690545436126, abs_det_jac_affine_GREEN_UP*0.065767460857085305, abs_det_jac_affine_GREEN_UP*0.0012463879784202093, abs_det_jac_affine_GREEN_UP*0.13345469765676804, abs_det_jac_affine_GREEN_UP*0.002529158472220073, abs_det_jac_affine_GREEN_UP*4.793119080794062e-5, abs_det_jac_affine_GREEN_UP*2.3424983832091605e-5, abs_det_jac_affine_GREEN_UP*0.00075470637742922845, abs_det_jac_affine_GREEN_UP*0.0022140849621758063, abs_det_jac_affine_GREEN_UP*0.0018477200224347493, abs_det_jac_affine_GREEN_UP*0.024315138068613611, abs_det_jac_affine_GREEN_UP*0.071333412782766975, abs_det_jac_affine_GREEN_UP*0.059529863270376029, abs_det_jac_affine_GREEN_UP*0.20927110365887197, abs_det_jac_affine_GREEN_UP*0.17464298568178085, abs_det_jac_affine_GREEN_UP*0.14574478709475508, abs_det_jac_affine_GREEN_UP*0.12450054579698165, abs_det_jac_affine_GREEN_UP*0.076241779079863126, abs_det_jac_affine_GREEN_UP*0.00013249910677232994, abs_det_jac_affine_GREEN_UP*0.15197152472496969, abs_det_jac_affine_GREEN_UP*0.046689023249274604, abs_det_jac_affine_GREEN_UP*8.1139946513070487e-5, abs_det_jac_affine_GREEN_UP*0.093064486909197122, abs_det_jac_affine_GREEN_UP*1.4101153680155925e-7, abs_det_jac_affine_GREEN_UP*0.00016173496390708763, abs_det_jac_affine_GREEN_UP*0.18550396047976195, abs_det_jac_affine_GREEN_UP*0.00021985802016328927, abs_det_jac_affine_GREEN_UP*0.012181957275462504, abs_det_jac_affine_GREEN_UP*0.0018336830929379926, abs_det_jac_affine_GREEN_UP*0.00059211167385993745, abs_det_jac_affine_GREEN_UP*0.67498144007199112, abs_det_jac_affine_GREEN_UP*0.10160124737918669, abs_det_jac_affine_GREEN_UP*0.032807896240979378, abs_det_jac_affine_GREEN_UP*0.015293477503478755, abs_det_jac_affine_GREEN_UP*0.0049383923528547903, abs_det_jac_affine_GREEN_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.080901699437494742, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -654,16 +654,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -686,32 +686,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -723,10 +723,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -734,41 +734,41 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.20046443821120821, abs_det_jac_affine_GREEN_DOWN*0.080605154129423817, abs_det_jac_affine_GREEN_DOWN*0.16356320182856121, abs_det_jac_affine_GREEN_DOWN*0.0030997579321792282, abs_det_jac_affine_GREEN_DOWN*0.032410690545436126, abs_det_jac_affine_GREEN_DOWN*0.065767460857085305, abs_det_jac_affine_GREEN_DOWN*0.0012463879784202093, abs_det_jac_affine_GREEN_DOWN*0.13345469765676804, abs_det_jac_affine_GREEN_DOWN*0.002529158472220073, abs_det_jac_affine_GREEN_DOWN*4.793119080794062e-5, abs_det_jac_affine_GREEN_DOWN*2.3424983832091605e-5, abs_det_jac_affine_GREEN_DOWN*0.00075470637742922845, abs_det_jac_affine_GREEN_DOWN*0.0022140849621758063, abs_det_jac_affine_GREEN_DOWN*0.0018477200224347493, abs_det_jac_affine_GREEN_DOWN*0.024315138068613611, abs_det_jac_affine_GREEN_DOWN*0.071333412782766975, abs_det_jac_affine_GREEN_DOWN*0.059529863270376029, abs_det_jac_affine_GREEN_DOWN*0.20927110365887197, abs_det_jac_affine_GREEN_DOWN*0.17464298568178085, abs_det_jac_affine_GREEN_DOWN*0.14574478709475508, abs_det_jac_affine_GREEN_DOWN*0.12450054579698165, abs_det_jac_affine_GREEN_DOWN*0.076241779079863126, abs_det_jac_affine_GREEN_DOWN*0.00013249910677232994, abs_det_jac_affine_GREEN_DOWN*0.15197152472496969, abs_det_jac_affine_GREEN_DOWN*0.046689023249274604, abs_det_jac_affine_GREEN_DOWN*8.1139946513070487e-5, abs_det_jac_affine_GREEN_DOWN*0.093064486909197122, abs_det_jac_affine_GREEN_DOWN*1.4101153680155925e-7, abs_det_jac_affine_GREEN_DOWN*0.00016173496390708763, abs_det_jac_affine_GREEN_DOWN*0.18550396047976195, abs_det_jac_affine_GREEN_DOWN*0.00021985802016328927, abs_det_jac_affine_GREEN_DOWN*0.012181957275462504, abs_det_jac_affine_GREEN_DOWN*0.0018336830929379926, abs_det_jac_affine_GREEN_DOWN*0.00059211167385993745, abs_det_jac_affine_GREEN_DOWN*0.67498144007199112, abs_det_jac_affine_GREEN_DOWN*0.10160124737918669, abs_det_jac_affine_GREEN_DOWN*0.032807896240979378, abs_det_jac_affine_GREEN_DOWN*0.015293477503478755, abs_det_jac_affine_GREEN_DOWN*0.0049383923528547903, abs_det_jac_affine_GREEN_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.080901699437494742, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -791,16 +791,16 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_0_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_1,q_tmp_0_1,q_tmp_0_1,q_tmp_0_1),q_acc_0_1);
                    q_acc_0_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_2,q_tmp_0_2,q_tmp_0_2,q_tmp_0_2),q_acc_0_2);
@@ -823,32 +823,32 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-                const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-                const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_0_1 = 0.0;
-                real_t q_acc_0_2 = 0.0;
-                real_t q_acc_0_3 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_1_2 = 0.0;
-                real_t q_acc_1_3 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_2_3 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+                const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+                const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_0_1 = 0.0;
+                walberla::float64 q_acc_0_2 = 0.0;
+                walberla::float64 q_acc_0_3 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_1_2 = 0.0;
+                walberla::float64 q_acc_1_3 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_2_3 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
-                   const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
-                   const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
-                   const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                    q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -860,10 +860,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                    q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-                const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-                const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-                const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+                const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+                const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+                const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+                const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
index d0a2d325001e6ac5e046a8ccb7db0c083a7c86e4..bfdad27ad5d59aa943618efd132d5bd1bb629b8c 100644
--- a/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,26 +56,26 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
        {
           /* FaceType.GRAY */
-          const real_t _data_phi_psi_det_jac_aff_0_GRAY [] = {abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.11111111111111108, abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777728, abs_det_jac_affine_GRAY*0.027777777777777748, abs_det_jac_affine_GRAY*0.11111111111111105, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GRAY [] = {abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.02777777777777779, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.027777777777777794, abs_det_jac_affine_GRAY*0.11111111111111113, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           {
@@ -86,9 +86,9 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t *
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -102,46 +102,46 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              }
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
        {
           /* FaceType.BLUE */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE [] = {abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.11111111111111108, abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777728, abs_det_jac_affine_BLUE*0.027777777777777748, abs_det_jac_affine_BLUE*0.11111111111111105, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE [] = {abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.02777777777777779, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.027777777777777794, abs_det_jac_affine_BLUE*0.11111111111111113, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           {
@@ -152,9 +152,9 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t *
                 __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -168,21 +168,21 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
                 for (int64_t q = 0; q < 3; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
                 _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
index f267b4bd18ced89c2066a99894be13619fc2d332..271e7a63e1c43be584742c7413f4f30218946c3d 100644
--- a/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/mass/avx/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,37 +56,37 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
        {
           /* CellType.WHITE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.20046443821120821, abs_det_jac_affine_WHITE_UP*0.080605154129423817, abs_det_jac_affine_WHITE_UP*0.16356320182856121, abs_det_jac_affine_WHITE_UP*0.0030997579321792282, abs_det_jac_affine_WHITE_UP*0.032410690545436126, abs_det_jac_affine_WHITE_UP*0.065767460857085305, abs_det_jac_affine_WHITE_UP*0.0012463879784202093, abs_det_jac_affine_WHITE_UP*0.13345469765676804, abs_det_jac_affine_WHITE_UP*0.002529158472220073, abs_det_jac_affine_WHITE_UP*4.793119080794062e-5, abs_det_jac_affine_WHITE_UP*2.3424983832091605e-5, abs_det_jac_affine_WHITE_UP*0.00075470637742922845, abs_det_jac_affine_WHITE_UP*0.0022140849621758063, abs_det_jac_affine_WHITE_UP*0.0018477200224347493, abs_det_jac_affine_WHITE_UP*0.024315138068613611, abs_det_jac_affine_WHITE_UP*0.071333412782766975, abs_det_jac_affine_WHITE_UP*0.059529863270376029, abs_det_jac_affine_WHITE_UP*0.20927110365887197, abs_det_jac_affine_WHITE_UP*0.17464298568178085, abs_det_jac_affine_WHITE_UP*0.14574478709475508, abs_det_jac_affine_WHITE_UP*0.12450054579698165, abs_det_jac_affine_WHITE_UP*0.076241779079863126, abs_det_jac_affine_WHITE_UP*0.00013249910677232994, abs_det_jac_affine_WHITE_UP*0.15197152472496969, abs_det_jac_affine_WHITE_UP*0.046689023249274604, abs_det_jac_affine_WHITE_UP*8.1139946513070487e-5, abs_det_jac_affine_WHITE_UP*0.093064486909197122, abs_det_jac_affine_WHITE_UP*1.4101153680155925e-7, abs_det_jac_affine_WHITE_UP*0.00016173496390708763, abs_det_jac_affine_WHITE_UP*0.18550396047976195, abs_det_jac_affine_WHITE_UP*0.00021985802016328927, abs_det_jac_affine_WHITE_UP*0.012181957275462504, abs_det_jac_affine_WHITE_UP*0.0018336830929379926, abs_det_jac_affine_WHITE_UP*0.00059211167385993745, abs_det_jac_affine_WHITE_UP*0.67498144007199112, abs_det_jac_affine_WHITE_UP*0.10160124737918669, abs_det_jac_affine_WHITE_UP*0.032807896240979378, abs_det_jac_affine_WHITE_UP*0.015293477503478755, abs_det_jac_affine_WHITE_UP*0.0049383923528547903, abs_det_jac_affine_WHITE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.080901699437494742, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -99,10 +99,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -119,25 +119,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
@@ -145,44 +145,44 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.20046443821120821, abs_det_jac_affine_WHITE_DOWN*0.080605154129423817, abs_det_jac_affine_WHITE_DOWN*0.16356320182856121, abs_det_jac_affine_WHITE_DOWN*0.0030997579321792282, abs_det_jac_affine_WHITE_DOWN*0.032410690545436126, abs_det_jac_affine_WHITE_DOWN*0.065767460857085305, abs_det_jac_affine_WHITE_DOWN*0.0012463879784202093, abs_det_jac_affine_WHITE_DOWN*0.13345469765676804, abs_det_jac_affine_WHITE_DOWN*0.002529158472220073, abs_det_jac_affine_WHITE_DOWN*4.793119080794062e-5, abs_det_jac_affine_WHITE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_WHITE_DOWN*0.00075470637742922845, abs_det_jac_affine_WHITE_DOWN*0.0022140849621758063, abs_det_jac_affine_WHITE_DOWN*0.0018477200224347493, abs_det_jac_affine_WHITE_DOWN*0.024315138068613611, abs_det_jac_affine_WHITE_DOWN*0.071333412782766975, abs_det_jac_affine_WHITE_DOWN*0.059529863270376029, abs_det_jac_affine_WHITE_DOWN*0.20927110365887197, abs_det_jac_affine_WHITE_DOWN*0.17464298568178085, abs_det_jac_affine_WHITE_DOWN*0.14574478709475508, abs_det_jac_affine_WHITE_DOWN*0.12450054579698165, abs_det_jac_affine_WHITE_DOWN*0.076241779079863126, abs_det_jac_affine_WHITE_DOWN*0.00013249910677232994, abs_det_jac_affine_WHITE_DOWN*0.15197152472496969, abs_det_jac_affine_WHITE_DOWN*0.046689023249274604, abs_det_jac_affine_WHITE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_WHITE_DOWN*0.093064486909197122, abs_det_jac_affine_WHITE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_WHITE_DOWN*0.00016173496390708763, abs_det_jac_affine_WHITE_DOWN*0.18550396047976195, abs_det_jac_affine_WHITE_DOWN*0.00021985802016328927, abs_det_jac_affine_WHITE_DOWN*0.012181957275462504, abs_det_jac_affine_WHITE_DOWN*0.0018336830929379926, abs_det_jac_affine_WHITE_DOWN*0.00059211167385993745, abs_det_jac_affine_WHITE_DOWN*0.67498144007199112, abs_det_jac_affine_WHITE_DOWN*0.10160124737918669, abs_det_jac_affine_WHITE_DOWN*0.032807896240979378, abs_det_jac_affine_WHITE_DOWN*0.015293477503478755, abs_det_jac_affine_WHITE_DOWN*0.0049383923528547903, abs_det_jac_affine_WHITE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.080901699437494742, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -195,10 +195,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -215,25 +215,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -241,38 +241,38 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
        {
           /* CellType.BLUE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.20046443821120821, abs_det_jac_affine_BLUE_UP*0.080605154129423817, abs_det_jac_affine_BLUE_UP*0.16356320182856121, abs_det_jac_affine_BLUE_UP*0.0030997579321792282, abs_det_jac_affine_BLUE_UP*0.032410690545436126, abs_det_jac_affine_BLUE_UP*0.065767460857085305, abs_det_jac_affine_BLUE_UP*0.0012463879784202093, abs_det_jac_affine_BLUE_UP*0.13345469765676804, abs_det_jac_affine_BLUE_UP*0.002529158472220073, abs_det_jac_affine_BLUE_UP*4.793119080794062e-5, abs_det_jac_affine_BLUE_UP*2.3424983832091605e-5, abs_det_jac_affine_BLUE_UP*0.00075470637742922845, abs_det_jac_affine_BLUE_UP*0.0022140849621758063, abs_det_jac_affine_BLUE_UP*0.0018477200224347493, abs_det_jac_affine_BLUE_UP*0.024315138068613611, abs_det_jac_affine_BLUE_UP*0.071333412782766975, abs_det_jac_affine_BLUE_UP*0.059529863270376029, abs_det_jac_affine_BLUE_UP*0.20927110365887197, abs_det_jac_affine_BLUE_UP*0.17464298568178085, abs_det_jac_affine_BLUE_UP*0.14574478709475508, abs_det_jac_affine_BLUE_UP*0.12450054579698165, abs_det_jac_affine_BLUE_UP*0.076241779079863126, abs_det_jac_affine_BLUE_UP*0.00013249910677232994, abs_det_jac_affine_BLUE_UP*0.15197152472496969, abs_det_jac_affine_BLUE_UP*0.046689023249274604, abs_det_jac_affine_BLUE_UP*8.1139946513070487e-5, abs_det_jac_affine_BLUE_UP*0.093064486909197122, abs_det_jac_affine_BLUE_UP*1.4101153680155925e-7, abs_det_jac_affine_BLUE_UP*0.00016173496390708763, abs_det_jac_affine_BLUE_UP*0.18550396047976195, abs_det_jac_affine_BLUE_UP*0.00021985802016328927, abs_det_jac_affine_BLUE_UP*0.012181957275462504, abs_det_jac_affine_BLUE_UP*0.0018336830929379926, abs_det_jac_affine_BLUE_UP*0.00059211167385993745, abs_det_jac_affine_BLUE_UP*0.67498144007199112, abs_det_jac_affine_BLUE_UP*0.10160124737918669, abs_det_jac_affine_BLUE_UP*0.032807896240979378, abs_det_jac_affine_BLUE_UP*0.015293477503478755, abs_det_jac_affine_BLUE_UP*0.0049383923528547903, abs_det_jac_affine_BLUE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.080901699437494742, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -285,10 +285,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -305,25 +305,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -331,41 +331,41 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.20046443821120821, abs_det_jac_affine_BLUE_DOWN*0.080605154129423817, abs_det_jac_affine_BLUE_DOWN*0.16356320182856121, abs_det_jac_affine_BLUE_DOWN*0.0030997579321792282, abs_det_jac_affine_BLUE_DOWN*0.032410690545436126, abs_det_jac_affine_BLUE_DOWN*0.065767460857085305, abs_det_jac_affine_BLUE_DOWN*0.0012463879784202093, abs_det_jac_affine_BLUE_DOWN*0.13345469765676804, abs_det_jac_affine_BLUE_DOWN*0.002529158472220073, abs_det_jac_affine_BLUE_DOWN*4.793119080794062e-5, abs_det_jac_affine_BLUE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_BLUE_DOWN*0.00075470637742922845, abs_det_jac_affine_BLUE_DOWN*0.0022140849621758063, abs_det_jac_affine_BLUE_DOWN*0.0018477200224347493, abs_det_jac_affine_BLUE_DOWN*0.024315138068613611, abs_det_jac_affine_BLUE_DOWN*0.071333412782766975, abs_det_jac_affine_BLUE_DOWN*0.059529863270376029, abs_det_jac_affine_BLUE_DOWN*0.20927110365887197, abs_det_jac_affine_BLUE_DOWN*0.17464298568178085, abs_det_jac_affine_BLUE_DOWN*0.14574478709475508, abs_det_jac_affine_BLUE_DOWN*0.12450054579698165, abs_det_jac_affine_BLUE_DOWN*0.076241779079863126, abs_det_jac_affine_BLUE_DOWN*0.00013249910677232994, abs_det_jac_affine_BLUE_DOWN*0.15197152472496969, abs_det_jac_affine_BLUE_DOWN*0.046689023249274604, abs_det_jac_affine_BLUE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_BLUE_DOWN*0.093064486909197122, abs_det_jac_affine_BLUE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_BLUE_DOWN*0.00016173496390708763, abs_det_jac_affine_BLUE_DOWN*0.18550396047976195, abs_det_jac_affine_BLUE_DOWN*0.00021985802016328927, abs_det_jac_affine_BLUE_DOWN*0.012181957275462504, abs_det_jac_affine_BLUE_DOWN*0.0018336830929379926, abs_det_jac_affine_BLUE_DOWN*0.00059211167385993745, abs_det_jac_affine_BLUE_DOWN*0.67498144007199112, abs_det_jac_affine_BLUE_DOWN*0.10160124737918669, abs_det_jac_affine_BLUE_DOWN*0.032807896240979378, abs_det_jac_affine_BLUE_DOWN*0.015293477503478755, abs_det_jac_affine_BLUE_DOWN*0.0049383923528547903, abs_det_jac_affine_BLUE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.080901699437494742, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -378,10 +378,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -398,25 +398,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
@@ -424,38 +424,38 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
        {
           /* CellType.GREEN_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.20046443821120821, abs_det_jac_affine_GREEN_UP*0.080605154129423817, abs_det_jac_affine_GREEN_UP*0.16356320182856121, abs_det_jac_affine_GREEN_UP*0.0030997579321792282, abs_det_jac_affine_GREEN_UP*0.032410690545436126, abs_det_jac_affine_GREEN_UP*0.065767460857085305, abs_det_jac_affine_GREEN_UP*0.0012463879784202093, abs_det_jac_affine_GREEN_UP*0.13345469765676804, abs_det_jac_affine_GREEN_UP*0.002529158472220073, abs_det_jac_affine_GREEN_UP*4.793119080794062e-5, abs_det_jac_affine_GREEN_UP*2.3424983832091605e-5, abs_det_jac_affine_GREEN_UP*0.00075470637742922845, abs_det_jac_affine_GREEN_UP*0.0022140849621758063, abs_det_jac_affine_GREEN_UP*0.0018477200224347493, abs_det_jac_affine_GREEN_UP*0.024315138068613611, abs_det_jac_affine_GREEN_UP*0.071333412782766975, abs_det_jac_affine_GREEN_UP*0.059529863270376029, abs_det_jac_affine_GREEN_UP*0.20927110365887197, abs_det_jac_affine_GREEN_UP*0.17464298568178085, abs_det_jac_affine_GREEN_UP*0.14574478709475508, abs_det_jac_affine_GREEN_UP*0.12450054579698165, abs_det_jac_affine_GREEN_UP*0.076241779079863126, abs_det_jac_affine_GREEN_UP*0.00013249910677232994, abs_det_jac_affine_GREEN_UP*0.15197152472496969, abs_det_jac_affine_GREEN_UP*0.046689023249274604, abs_det_jac_affine_GREEN_UP*8.1139946513070487e-5, abs_det_jac_affine_GREEN_UP*0.093064486909197122, abs_det_jac_affine_GREEN_UP*1.4101153680155925e-7, abs_det_jac_affine_GREEN_UP*0.00016173496390708763, abs_det_jac_affine_GREEN_UP*0.18550396047976195, abs_det_jac_affine_GREEN_UP*0.00021985802016328927, abs_det_jac_affine_GREEN_UP*0.012181957275462504, abs_det_jac_affine_GREEN_UP*0.0018336830929379926, abs_det_jac_affine_GREEN_UP*0.00059211167385993745, abs_det_jac_affine_GREEN_UP*0.67498144007199112, abs_det_jac_affine_GREEN_UP*0.10160124737918669, abs_det_jac_affine_GREEN_UP*0.032807896240979378, abs_det_jac_affine_GREEN_UP*0.015293477503478755, abs_det_jac_affine_GREEN_UP*0.0049383923528547903, abs_det_jac_affine_GREEN_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.080901699437494742, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -468,10 +468,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -488,25 +488,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
@@ -514,41 +514,41 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.20046443821120821, abs_det_jac_affine_GREEN_DOWN*0.080605154129423817, abs_det_jac_affine_GREEN_DOWN*0.16356320182856121, abs_det_jac_affine_GREEN_DOWN*0.0030997579321792282, abs_det_jac_affine_GREEN_DOWN*0.032410690545436126, abs_det_jac_affine_GREEN_DOWN*0.065767460857085305, abs_det_jac_affine_GREEN_DOWN*0.0012463879784202093, abs_det_jac_affine_GREEN_DOWN*0.13345469765676804, abs_det_jac_affine_GREEN_DOWN*0.002529158472220073, abs_det_jac_affine_GREEN_DOWN*4.793119080794062e-5, abs_det_jac_affine_GREEN_DOWN*2.3424983832091605e-5, abs_det_jac_affine_GREEN_DOWN*0.00075470637742922845, abs_det_jac_affine_GREEN_DOWN*0.0022140849621758063, abs_det_jac_affine_GREEN_DOWN*0.0018477200224347493, abs_det_jac_affine_GREEN_DOWN*0.024315138068613611, abs_det_jac_affine_GREEN_DOWN*0.071333412782766975, abs_det_jac_affine_GREEN_DOWN*0.059529863270376029, abs_det_jac_affine_GREEN_DOWN*0.20927110365887197, abs_det_jac_affine_GREEN_DOWN*0.17464298568178085, abs_det_jac_affine_GREEN_DOWN*0.14574478709475508, abs_det_jac_affine_GREEN_DOWN*0.12450054579698165, abs_det_jac_affine_GREEN_DOWN*0.076241779079863126, abs_det_jac_affine_GREEN_DOWN*0.00013249910677232994, abs_det_jac_affine_GREEN_DOWN*0.15197152472496969, abs_det_jac_affine_GREEN_DOWN*0.046689023249274604, abs_det_jac_affine_GREEN_DOWN*8.1139946513070487e-5, abs_det_jac_affine_GREEN_DOWN*0.093064486909197122, abs_det_jac_affine_GREEN_DOWN*1.4101153680155925e-7, abs_det_jac_affine_GREEN_DOWN*0.00016173496390708763, abs_det_jac_affine_GREEN_DOWN*0.18550396047976195, abs_det_jac_affine_GREEN_DOWN*0.00021985802016328927, abs_det_jac_affine_GREEN_DOWN*0.012181957275462504, abs_det_jac_affine_GREEN_DOWN*0.0018336830929379926, abs_det_jac_affine_GREEN_DOWN*0.00059211167385993745, abs_det_jac_affine_GREEN_DOWN*0.67498144007199112, abs_det_jac_affine_GREEN_DOWN*0.10160124737918669, abs_det_jac_affine_GREEN_DOWN*0.032807896240979378, abs_det_jac_affine_GREEN_DOWN*0.015293477503478755, abs_det_jac_affine_GREEN_DOWN*0.0049383923528547903, abs_det_jac_affine_GREEN_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.080901699437494742, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
@@ -561,10 +561,10 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
                 __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0);
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = _mm256_add_pd(_mm256_set_pd(q_tmp_0_0,q_tmp_0_0,q_tmp_0_0,q_tmp_0_0),q_acc_0_0);
                    q_acc_1_1 = _mm256_add_pd(_mm256_set_pd(q_tmp_1_1,q_tmp_1_1,q_tmp_1_1,q_tmp_1_1),q_acc_1_1);
                    q_acc_2_2 = _mm256_add_pd(_mm256_set_pd(q_tmp_2_2,q_tmp_2_2,q_tmp_2_2,q_tmp_2_2),q_acc_2_2);
@@ -581,25 +581,25 @@ void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t *
              }
              for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
              {
-                real_t q_acc_0_0 = 0.0;
-                real_t q_acc_1_1 = 0.0;
-                real_t q_acc_2_2 = 0.0;
-                real_t q_acc_3_3 = 0.0;
+                walberla::float64 q_acc_0_0 = 0.0;
+                walberla::float64 q_acc_1_1 = 0.0;
+                walberla::float64 q_acc_2_2 = 0.0;
+                walberla::float64 q_acc_3_3 = 0.0;
                 for (int64_t q = 0; q < 4; q += 1)
                 {
-                   const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                   const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                   const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                   const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                   const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                   const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                   const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                   const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                    q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                    q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                    q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                    q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
                 }
-                const real_t elMatDiag_0 = q_acc_0_0;
-                const real_t elMatDiag_1 = q_acc_1_1;
-                const real_t elMatDiag_2 = q_acc_2_2;
-                const real_t elMatDiag_3 = q_acc_3_3;
+                const walberla::float64 elMatDiag_0 = q_acc_0_0;
+                const walberla::float64 elMatDiag_1 = q_acc_1_1;
+                const walberla::float64 elMatDiag_2 = q_acc_2_2;
+                const walberla::float64 elMatDiag_3 = q_acc_3_3;
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
                 _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
                 _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/mass/noarch/P1ElementwiseMass_apply_macro_2D.cpp b/operators/mass/noarch/P1ElementwiseMass_apply_macro_2D.cpp
index ba6d02a90eca463fa78965da427dd094a7d5ba5c..1c8e55bc54cc96cf71094edb2c9f966bbb9614c0 100644
--- a/operators/mass/noarch/P1ElementwiseMass_apply_macro_2D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_apply_macro_2D.cpp
@@ -56,47 +56,47 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::apply_macro_2D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
        {
           /* FaceType.GRAY */
-          const real_t _data_phi_psi_det_jac_aff_0_GRAY [] = {abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.11111111111111108, abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777728, abs_det_jac_affine_GRAY*0.027777777777777748, abs_det_jac_affine_GRAY*0.11111111111111105, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GRAY [] = {abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.02777777777777779, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.027777777777777794, abs_det_jac_affine_GRAY*0.11111111111111113, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 2]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -104,54 +104,54 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
        {
           /* FaceType.BLUE */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE [] = {abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.11111111111111108, abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777728, abs_det_jac_affine_BLUE*0.027777777777777748, abs_det_jac_affine_BLUE*0.11111111111111105, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE [] = {abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.02777777777777779, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.027777777777777794, abs_det_jac_affine_BLUE*0.11111111111111113, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 2]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -159,9 +159,9 @@ void P1ElementwiseMass::apply_macro_2D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2;
              _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/mass/noarch/P1ElementwiseMass_apply_macro_3D.cpp b/operators/mass/noarch/P1ElementwiseMass_apply_macro_3D.cpp
index ac2a810697e8d3bf5a1ae91067bb1fe9e32f6988..35231e9c08bc227b05c94d02d05f174879a45a6c 100644
--- a/operators/mass/noarch/P1ElementwiseMass_apply_macro_3D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_apply_macro_3D.cpp
@@ -56,68 +56,68 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::apply_macro_3D( walberla::float64 * RESTRICT  _data_dst, walberla::float64 * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
        {
           /* CellType.WHITE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.20046443821120821, abs_det_jac_affine_WHITE_UP*0.080605154129423817, abs_det_jac_affine_WHITE_UP*0.16356320182856121, abs_det_jac_affine_WHITE_UP*0.0030997579321792282, abs_det_jac_affine_WHITE_UP*0.032410690545436126, abs_det_jac_affine_WHITE_UP*0.065767460857085305, abs_det_jac_affine_WHITE_UP*0.0012463879784202093, abs_det_jac_affine_WHITE_UP*0.13345469765676804, abs_det_jac_affine_WHITE_UP*0.002529158472220073, abs_det_jac_affine_WHITE_UP*4.793119080794062e-5, abs_det_jac_affine_WHITE_UP*2.3424983832091605e-5, abs_det_jac_affine_WHITE_UP*0.00075470637742922845, abs_det_jac_affine_WHITE_UP*0.0022140849621758063, abs_det_jac_affine_WHITE_UP*0.0018477200224347493, abs_det_jac_affine_WHITE_UP*0.024315138068613611, abs_det_jac_affine_WHITE_UP*0.071333412782766975, abs_det_jac_affine_WHITE_UP*0.059529863270376029, abs_det_jac_affine_WHITE_UP*0.20927110365887197, abs_det_jac_affine_WHITE_UP*0.17464298568178085, abs_det_jac_affine_WHITE_UP*0.14574478709475508, abs_det_jac_affine_WHITE_UP*0.12450054579698165, abs_det_jac_affine_WHITE_UP*0.076241779079863126, abs_det_jac_affine_WHITE_UP*0.00013249910677232994, abs_det_jac_affine_WHITE_UP*0.15197152472496969, abs_det_jac_affine_WHITE_UP*0.046689023249274604, abs_det_jac_affine_WHITE_UP*8.1139946513070487e-5, abs_det_jac_affine_WHITE_UP*0.093064486909197122, abs_det_jac_affine_WHITE_UP*1.4101153680155925e-7, abs_det_jac_affine_WHITE_UP*0.00016173496390708763, abs_det_jac_affine_WHITE_UP*0.18550396047976195, abs_det_jac_affine_WHITE_UP*0.00021985802016328927, abs_det_jac_affine_WHITE_UP*0.012181957275462504, abs_det_jac_affine_WHITE_UP*0.0018336830929379926, abs_det_jac_affine_WHITE_UP*0.00059211167385993745, abs_det_jac_affine_WHITE_UP*0.67498144007199112, abs_det_jac_affine_WHITE_UP*0.10160124737918669, abs_det_jac_affine_WHITE_UP*0.032807896240979378, abs_det_jac_affine_WHITE_UP*0.015293477503478755, abs_det_jac_affine_WHITE_UP*0.0049383923528547903, abs_det_jac_affine_WHITE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.080901699437494742, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -129,85 +129,85 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.20046443821120821, abs_det_jac_affine_WHITE_DOWN*0.080605154129423817, abs_det_jac_affine_WHITE_DOWN*0.16356320182856121, abs_det_jac_affine_WHITE_DOWN*0.0030997579321792282, abs_det_jac_affine_WHITE_DOWN*0.032410690545436126, abs_det_jac_affine_WHITE_DOWN*0.065767460857085305, abs_det_jac_affine_WHITE_DOWN*0.0012463879784202093, abs_det_jac_affine_WHITE_DOWN*0.13345469765676804, abs_det_jac_affine_WHITE_DOWN*0.002529158472220073, abs_det_jac_affine_WHITE_DOWN*4.793119080794062e-5, abs_det_jac_affine_WHITE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_WHITE_DOWN*0.00075470637742922845, abs_det_jac_affine_WHITE_DOWN*0.0022140849621758063, abs_det_jac_affine_WHITE_DOWN*0.0018477200224347493, abs_det_jac_affine_WHITE_DOWN*0.024315138068613611, abs_det_jac_affine_WHITE_DOWN*0.071333412782766975, abs_det_jac_affine_WHITE_DOWN*0.059529863270376029, abs_det_jac_affine_WHITE_DOWN*0.20927110365887197, abs_det_jac_affine_WHITE_DOWN*0.17464298568178085, abs_det_jac_affine_WHITE_DOWN*0.14574478709475508, abs_det_jac_affine_WHITE_DOWN*0.12450054579698165, abs_det_jac_affine_WHITE_DOWN*0.076241779079863126, abs_det_jac_affine_WHITE_DOWN*0.00013249910677232994, abs_det_jac_affine_WHITE_DOWN*0.15197152472496969, abs_det_jac_affine_WHITE_DOWN*0.046689023249274604, abs_det_jac_affine_WHITE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_WHITE_DOWN*0.093064486909197122, abs_det_jac_affine_WHITE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_WHITE_DOWN*0.00016173496390708763, abs_det_jac_affine_WHITE_DOWN*0.18550396047976195, abs_det_jac_affine_WHITE_DOWN*0.00021985802016328927, abs_det_jac_affine_WHITE_DOWN*0.012181957275462504, abs_det_jac_affine_WHITE_DOWN*0.0018336830929379926, abs_det_jac_affine_WHITE_DOWN*0.00059211167385993745, abs_det_jac_affine_WHITE_DOWN*0.67498144007199112, abs_det_jac_affine_WHITE_DOWN*0.10160124737918669, abs_det_jac_affine_WHITE_DOWN*0.032807896240979378, abs_det_jac_affine_WHITE_DOWN*0.015293477503478755, abs_det_jac_affine_WHITE_DOWN*0.0049383923528547903, abs_det_jac_affine_WHITE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.080901699437494742, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -219,79 +219,79 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
        {
           /* CellType.BLUE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.20046443821120821, abs_det_jac_affine_BLUE_UP*0.080605154129423817, abs_det_jac_affine_BLUE_UP*0.16356320182856121, abs_det_jac_affine_BLUE_UP*0.0030997579321792282, abs_det_jac_affine_BLUE_UP*0.032410690545436126, abs_det_jac_affine_BLUE_UP*0.065767460857085305, abs_det_jac_affine_BLUE_UP*0.0012463879784202093, abs_det_jac_affine_BLUE_UP*0.13345469765676804, abs_det_jac_affine_BLUE_UP*0.002529158472220073, abs_det_jac_affine_BLUE_UP*4.793119080794062e-5, abs_det_jac_affine_BLUE_UP*2.3424983832091605e-5, abs_det_jac_affine_BLUE_UP*0.00075470637742922845, abs_det_jac_affine_BLUE_UP*0.0022140849621758063, abs_det_jac_affine_BLUE_UP*0.0018477200224347493, abs_det_jac_affine_BLUE_UP*0.024315138068613611, abs_det_jac_affine_BLUE_UP*0.071333412782766975, abs_det_jac_affine_BLUE_UP*0.059529863270376029, abs_det_jac_affine_BLUE_UP*0.20927110365887197, abs_det_jac_affine_BLUE_UP*0.17464298568178085, abs_det_jac_affine_BLUE_UP*0.14574478709475508, abs_det_jac_affine_BLUE_UP*0.12450054579698165, abs_det_jac_affine_BLUE_UP*0.076241779079863126, abs_det_jac_affine_BLUE_UP*0.00013249910677232994, abs_det_jac_affine_BLUE_UP*0.15197152472496969, abs_det_jac_affine_BLUE_UP*0.046689023249274604, abs_det_jac_affine_BLUE_UP*8.1139946513070487e-5, abs_det_jac_affine_BLUE_UP*0.093064486909197122, abs_det_jac_affine_BLUE_UP*1.4101153680155925e-7, abs_det_jac_affine_BLUE_UP*0.00016173496390708763, abs_det_jac_affine_BLUE_UP*0.18550396047976195, abs_det_jac_affine_BLUE_UP*0.00021985802016328927, abs_det_jac_affine_BLUE_UP*0.012181957275462504, abs_det_jac_affine_BLUE_UP*0.0018336830929379926, abs_det_jac_affine_BLUE_UP*0.00059211167385993745, abs_det_jac_affine_BLUE_UP*0.67498144007199112, abs_det_jac_affine_BLUE_UP*0.10160124737918669, abs_det_jac_affine_BLUE_UP*0.032807896240979378, abs_det_jac_affine_BLUE_UP*0.015293477503478755, abs_det_jac_affine_BLUE_UP*0.0049383923528547903, abs_det_jac_affine_BLUE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.080901699437494742, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -303,82 +303,82 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.20046443821120821, abs_det_jac_affine_BLUE_DOWN*0.080605154129423817, abs_det_jac_affine_BLUE_DOWN*0.16356320182856121, abs_det_jac_affine_BLUE_DOWN*0.0030997579321792282, abs_det_jac_affine_BLUE_DOWN*0.032410690545436126, abs_det_jac_affine_BLUE_DOWN*0.065767460857085305, abs_det_jac_affine_BLUE_DOWN*0.0012463879784202093, abs_det_jac_affine_BLUE_DOWN*0.13345469765676804, abs_det_jac_affine_BLUE_DOWN*0.002529158472220073, abs_det_jac_affine_BLUE_DOWN*4.793119080794062e-5, abs_det_jac_affine_BLUE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_BLUE_DOWN*0.00075470637742922845, abs_det_jac_affine_BLUE_DOWN*0.0022140849621758063, abs_det_jac_affine_BLUE_DOWN*0.0018477200224347493, abs_det_jac_affine_BLUE_DOWN*0.024315138068613611, abs_det_jac_affine_BLUE_DOWN*0.071333412782766975, abs_det_jac_affine_BLUE_DOWN*0.059529863270376029, abs_det_jac_affine_BLUE_DOWN*0.20927110365887197, abs_det_jac_affine_BLUE_DOWN*0.17464298568178085, abs_det_jac_affine_BLUE_DOWN*0.14574478709475508, abs_det_jac_affine_BLUE_DOWN*0.12450054579698165, abs_det_jac_affine_BLUE_DOWN*0.076241779079863126, abs_det_jac_affine_BLUE_DOWN*0.00013249910677232994, abs_det_jac_affine_BLUE_DOWN*0.15197152472496969, abs_det_jac_affine_BLUE_DOWN*0.046689023249274604, abs_det_jac_affine_BLUE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_BLUE_DOWN*0.093064486909197122, abs_det_jac_affine_BLUE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_BLUE_DOWN*0.00016173496390708763, abs_det_jac_affine_BLUE_DOWN*0.18550396047976195, abs_det_jac_affine_BLUE_DOWN*0.00021985802016328927, abs_det_jac_affine_BLUE_DOWN*0.012181957275462504, abs_det_jac_affine_BLUE_DOWN*0.0018336830929379926, abs_det_jac_affine_BLUE_DOWN*0.00059211167385993745, abs_det_jac_affine_BLUE_DOWN*0.67498144007199112, abs_det_jac_affine_BLUE_DOWN*0.10160124737918669, abs_det_jac_affine_BLUE_DOWN*0.032807896240979378, abs_det_jac_affine_BLUE_DOWN*0.015293477503478755, abs_det_jac_affine_BLUE_DOWN*0.0049383923528547903, abs_det_jac_affine_BLUE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.080901699437494742, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -390,79 +390,79 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
        {
           /* CellType.GREEN_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.20046443821120821, abs_det_jac_affine_GREEN_UP*0.080605154129423817, abs_det_jac_affine_GREEN_UP*0.16356320182856121, abs_det_jac_affine_GREEN_UP*0.0030997579321792282, abs_det_jac_affine_GREEN_UP*0.032410690545436126, abs_det_jac_affine_GREEN_UP*0.065767460857085305, abs_det_jac_affine_GREEN_UP*0.0012463879784202093, abs_det_jac_affine_GREEN_UP*0.13345469765676804, abs_det_jac_affine_GREEN_UP*0.002529158472220073, abs_det_jac_affine_GREEN_UP*4.793119080794062e-5, abs_det_jac_affine_GREEN_UP*2.3424983832091605e-5, abs_det_jac_affine_GREEN_UP*0.00075470637742922845, abs_det_jac_affine_GREEN_UP*0.0022140849621758063, abs_det_jac_affine_GREEN_UP*0.0018477200224347493, abs_det_jac_affine_GREEN_UP*0.024315138068613611, abs_det_jac_affine_GREEN_UP*0.071333412782766975, abs_det_jac_affine_GREEN_UP*0.059529863270376029, abs_det_jac_affine_GREEN_UP*0.20927110365887197, abs_det_jac_affine_GREEN_UP*0.17464298568178085, abs_det_jac_affine_GREEN_UP*0.14574478709475508, abs_det_jac_affine_GREEN_UP*0.12450054579698165, abs_det_jac_affine_GREEN_UP*0.076241779079863126, abs_det_jac_affine_GREEN_UP*0.00013249910677232994, abs_det_jac_affine_GREEN_UP*0.15197152472496969, abs_det_jac_affine_GREEN_UP*0.046689023249274604, abs_det_jac_affine_GREEN_UP*8.1139946513070487e-5, abs_det_jac_affine_GREEN_UP*0.093064486909197122, abs_det_jac_affine_GREEN_UP*1.4101153680155925e-7, abs_det_jac_affine_GREEN_UP*0.00016173496390708763, abs_det_jac_affine_GREEN_UP*0.18550396047976195, abs_det_jac_affine_GREEN_UP*0.00021985802016328927, abs_det_jac_affine_GREEN_UP*0.012181957275462504, abs_det_jac_affine_GREEN_UP*0.0018336830929379926, abs_det_jac_affine_GREEN_UP*0.00059211167385993745, abs_det_jac_affine_GREEN_UP*0.67498144007199112, abs_det_jac_affine_GREEN_UP*0.10160124737918669, abs_det_jac_affine_GREEN_UP*0.032807896240979378, abs_det_jac_affine_GREEN_UP*0.015293477503478755, abs_det_jac_affine_GREEN_UP*0.0049383923528547903, abs_det_jac_affine_GREEN_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.080901699437494742, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -474,82 +474,82 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.20046443821120821, abs_det_jac_affine_GREEN_DOWN*0.080605154129423817, abs_det_jac_affine_GREEN_DOWN*0.16356320182856121, abs_det_jac_affine_GREEN_DOWN*0.0030997579321792282, abs_det_jac_affine_GREEN_DOWN*0.032410690545436126, abs_det_jac_affine_GREEN_DOWN*0.065767460857085305, abs_det_jac_affine_GREEN_DOWN*0.0012463879784202093, abs_det_jac_affine_GREEN_DOWN*0.13345469765676804, abs_det_jac_affine_GREEN_DOWN*0.002529158472220073, abs_det_jac_affine_GREEN_DOWN*4.793119080794062e-5, abs_det_jac_affine_GREEN_DOWN*2.3424983832091605e-5, abs_det_jac_affine_GREEN_DOWN*0.00075470637742922845, abs_det_jac_affine_GREEN_DOWN*0.0022140849621758063, abs_det_jac_affine_GREEN_DOWN*0.0018477200224347493, abs_det_jac_affine_GREEN_DOWN*0.024315138068613611, abs_det_jac_affine_GREEN_DOWN*0.071333412782766975, abs_det_jac_affine_GREEN_DOWN*0.059529863270376029, abs_det_jac_affine_GREEN_DOWN*0.20927110365887197, abs_det_jac_affine_GREEN_DOWN*0.17464298568178085, abs_det_jac_affine_GREEN_DOWN*0.14574478709475508, abs_det_jac_affine_GREEN_DOWN*0.12450054579698165, abs_det_jac_affine_GREEN_DOWN*0.076241779079863126, abs_det_jac_affine_GREEN_DOWN*0.00013249910677232994, abs_det_jac_affine_GREEN_DOWN*0.15197152472496969, abs_det_jac_affine_GREEN_DOWN*0.046689023249274604, abs_det_jac_affine_GREEN_DOWN*8.1139946513070487e-5, abs_det_jac_affine_GREEN_DOWN*0.093064486909197122, abs_det_jac_affine_GREEN_DOWN*1.4101153680155925e-7, abs_det_jac_affine_GREEN_DOWN*0.00016173496390708763, abs_det_jac_affine_GREEN_DOWN*0.18550396047976195, abs_det_jac_affine_GREEN_DOWN*0.00021985802016328927, abs_det_jac_affine_GREEN_DOWN*0.012181957275462504, abs_det_jac_affine_GREEN_DOWN*0.0018336830929379926, abs_det_jac_affine_GREEN_DOWN*0.00059211167385993745, abs_det_jac_affine_GREEN_DOWN*0.67498144007199112, abs_det_jac_affine_GREEN_DOWN*0.10160124737918669, abs_det_jac_affine_GREEN_DOWN*0.032807896240979378, abs_det_jac_affine_GREEN_DOWN*0.015293477503478755, abs_det_jac_affine_GREEN_DOWN*0.0049383923528547903, abs_det_jac_affine_GREEN_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.080901699437494742, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
-             const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
-             const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             const walberla::float64 src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
+             const walberla::float64 src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
+             const walberla::float64 src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -561,10 +561,10 @@ void P1ElementwiseMass::apply_macro_3D( real_t * RESTRICT  _data_dst, real_t * R
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
-             const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
-             const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
-             const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
+             const walberla::float64 elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3;
+             const walberla::float64 elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3;
+             const walberla::float64 elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3;
+             const walberla::float64 elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3;
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
index 035f10e1010f75534e02f570ae4958f582f07079..a9e80818144708724b7efb9510db5b4ddaa3602d 100644
--- a/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -56,88 +56,88 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_2D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
        {
           /* FaceType.GRAY */
-          const real_t _data_phi_psi_det_jac_aff_0_GRAY [] = {abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.11111111111111108, abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777728, abs_det_jac_affine_GRAY*0.027777777777777748, abs_det_jac_affine_GRAY*0.11111111111111105, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GRAY [] = {abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.02777777777777779, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.027777777777777794, abs_det_jac_affine_GRAY*0.11111111111111113, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))];
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
        {
           /* FaceType.BLUE */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE [] = {abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.11111111111111108, abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777728, abs_det_jac_affine_BLUE*0.027777777777777748, abs_det_jac_affine_BLUE*0.11111111111111105, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE [] = {abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.02777777777777779, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.027777777777777794, abs_det_jac_affine_BLUE*0.11111111111111113, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
              _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1];
diff --git a/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
index 22dbd2a412e06d4ec1e4cec464a16ce879a44f0c..ce57c15b9717a179ab16ce5e56d9fa53a29a26d6 100644
--- a/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
@@ -56,383 +56,383 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT  _data_invDiag_, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::computeInverseDiagonalOperatorValues_macro_3D( walberla::float64 * RESTRICT  _data_invDiag_, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
        {
           /* CellType.WHITE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.20046443821120821, abs_det_jac_affine_WHITE_UP*0.080605154129423817, abs_det_jac_affine_WHITE_UP*0.16356320182856121, abs_det_jac_affine_WHITE_UP*0.0030997579321792282, abs_det_jac_affine_WHITE_UP*0.032410690545436126, abs_det_jac_affine_WHITE_UP*0.065767460857085305, abs_det_jac_affine_WHITE_UP*0.0012463879784202093, abs_det_jac_affine_WHITE_UP*0.13345469765676804, abs_det_jac_affine_WHITE_UP*0.002529158472220073, abs_det_jac_affine_WHITE_UP*4.793119080794062e-5, abs_det_jac_affine_WHITE_UP*2.3424983832091605e-5, abs_det_jac_affine_WHITE_UP*0.00075470637742922845, abs_det_jac_affine_WHITE_UP*0.0022140849621758063, abs_det_jac_affine_WHITE_UP*0.0018477200224347493, abs_det_jac_affine_WHITE_UP*0.024315138068613611, abs_det_jac_affine_WHITE_UP*0.071333412782766975, abs_det_jac_affine_WHITE_UP*0.059529863270376029, abs_det_jac_affine_WHITE_UP*0.20927110365887197, abs_det_jac_affine_WHITE_UP*0.17464298568178085, abs_det_jac_affine_WHITE_UP*0.14574478709475508, abs_det_jac_affine_WHITE_UP*0.12450054579698165, abs_det_jac_affine_WHITE_UP*0.076241779079863126, abs_det_jac_affine_WHITE_UP*0.00013249910677232994, abs_det_jac_affine_WHITE_UP*0.15197152472496969, abs_det_jac_affine_WHITE_UP*0.046689023249274604, abs_det_jac_affine_WHITE_UP*8.1139946513070487e-5, abs_det_jac_affine_WHITE_UP*0.093064486909197122, abs_det_jac_affine_WHITE_UP*1.4101153680155925e-7, abs_det_jac_affine_WHITE_UP*0.00016173496390708763, abs_det_jac_affine_WHITE_UP*0.18550396047976195, abs_det_jac_affine_WHITE_UP*0.00021985802016328927, abs_det_jac_affine_WHITE_UP*0.012181957275462504, abs_det_jac_affine_WHITE_UP*0.0018336830929379926, abs_det_jac_affine_WHITE_UP*0.00059211167385993745, abs_det_jac_affine_WHITE_UP*0.67498144007199112, abs_det_jac_affine_WHITE_UP*0.10160124737918669, abs_det_jac_affine_WHITE_UP*0.032807896240979378, abs_det_jac_affine_WHITE_UP*0.015293477503478755, abs_det_jac_affine_WHITE_UP*0.0049383923528547903, abs_det_jac_affine_WHITE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.080901699437494742, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.20046443821120821, abs_det_jac_affine_WHITE_DOWN*0.080605154129423817, abs_det_jac_affine_WHITE_DOWN*0.16356320182856121, abs_det_jac_affine_WHITE_DOWN*0.0030997579321792282, abs_det_jac_affine_WHITE_DOWN*0.032410690545436126, abs_det_jac_affine_WHITE_DOWN*0.065767460857085305, abs_det_jac_affine_WHITE_DOWN*0.0012463879784202093, abs_det_jac_affine_WHITE_DOWN*0.13345469765676804, abs_det_jac_affine_WHITE_DOWN*0.002529158472220073, abs_det_jac_affine_WHITE_DOWN*4.793119080794062e-5, abs_det_jac_affine_WHITE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_WHITE_DOWN*0.00075470637742922845, abs_det_jac_affine_WHITE_DOWN*0.0022140849621758063, abs_det_jac_affine_WHITE_DOWN*0.0018477200224347493, abs_det_jac_affine_WHITE_DOWN*0.024315138068613611, abs_det_jac_affine_WHITE_DOWN*0.071333412782766975, abs_det_jac_affine_WHITE_DOWN*0.059529863270376029, abs_det_jac_affine_WHITE_DOWN*0.20927110365887197, abs_det_jac_affine_WHITE_DOWN*0.17464298568178085, abs_det_jac_affine_WHITE_DOWN*0.14574478709475508, abs_det_jac_affine_WHITE_DOWN*0.12450054579698165, abs_det_jac_affine_WHITE_DOWN*0.076241779079863126, abs_det_jac_affine_WHITE_DOWN*0.00013249910677232994, abs_det_jac_affine_WHITE_DOWN*0.15197152472496969, abs_det_jac_affine_WHITE_DOWN*0.046689023249274604, abs_det_jac_affine_WHITE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_WHITE_DOWN*0.093064486909197122, abs_det_jac_affine_WHITE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_WHITE_DOWN*0.00016173496390708763, abs_det_jac_affine_WHITE_DOWN*0.18550396047976195, abs_det_jac_affine_WHITE_DOWN*0.00021985802016328927, abs_det_jac_affine_WHITE_DOWN*0.012181957275462504, abs_det_jac_affine_WHITE_DOWN*0.0018336830929379926, abs_det_jac_affine_WHITE_DOWN*0.00059211167385993745, abs_det_jac_affine_WHITE_DOWN*0.67498144007199112, abs_det_jac_affine_WHITE_DOWN*0.10160124737918669, abs_det_jac_affine_WHITE_DOWN*0.032807896240979378, abs_det_jac_affine_WHITE_DOWN*0.015293477503478755, abs_det_jac_affine_WHITE_DOWN*0.0049383923528547903, abs_det_jac_affine_WHITE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.080901699437494742, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
        {
           /* CellType.BLUE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.20046443821120821, abs_det_jac_affine_BLUE_UP*0.080605154129423817, abs_det_jac_affine_BLUE_UP*0.16356320182856121, abs_det_jac_affine_BLUE_UP*0.0030997579321792282, abs_det_jac_affine_BLUE_UP*0.032410690545436126, abs_det_jac_affine_BLUE_UP*0.065767460857085305, abs_det_jac_affine_BLUE_UP*0.0012463879784202093, abs_det_jac_affine_BLUE_UP*0.13345469765676804, abs_det_jac_affine_BLUE_UP*0.002529158472220073, abs_det_jac_affine_BLUE_UP*4.793119080794062e-5, abs_det_jac_affine_BLUE_UP*2.3424983832091605e-5, abs_det_jac_affine_BLUE_UP*0.00075470637742922845, abs_det_jac_affine_BLUE_UP*0.0022140849621758063, abs_det_jac_affine_BLUE_UP*0.0018477200224347493, abs_det_jac_affine_BLUE_UP*0.024315138068613611, abs_det_jac_affine_BLUE_UP*0.071333412782766975, abs_det_jac_affine_BLUE_UP*0.059529863270376029, abs_det_jac_affine_BLUE_UP*0.20927110365887197, abs_det_jac_affine_BLUE_UP*0.17464298568178085, abs_det_jac_affine_BLUE_UP*0.14574478709475508, abs_det_jac_affine_BLUE_UP*0.12450054579698165, abs_det_jac_affine_BLUE_UP*0.076241779079863126, abs_det_jac_affine_BLUE_UP*0.00013249910677232994, abs_det_jac_affine_BLUE_UP*0.15197152472496969, abs_det_jac_affine_BLUE_UP*0.046689023249274604, abs_det_jac_affine_BLUE_UP*8.1139946513070487e-5, abs_det_jac_affine_BLUE_UP*0.093064486909197122, abs_det_jac_affine_BLUE_UP*1.4101153680155925e-7, abs_det_jac_affine_BLUE_UP*0.00016173496390708763, abs_det_jac_affine_BLUE_UP*0.18550396047976195, abs_det_jac_affine_BLUE_UP*0.00021985802016328927, abs_det_jac_affine_BLUE_UP*0.012181957275462504, abs_det_jac_affine_BLUE_UP*0.0018336830929379926, abs_det_jac_affine_BLUE_UP*0.00059211167385993745, abs_det_jac_affine_BLUE_UP*0.67498144007199112, abs_det_jac_affine_BLUE_UP*0.10160124737918669, abs_det_jac_affine_BLUE_UP*0.032807896240979378, abs_det_jac_affine_BLUE_UP*0.015293477503478755, abs_det_jac_affine_BLUE_UP*0.0049383923528547903, abs_det_jac_affine_BLUE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.080901699437494742, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.20046443821120821, abs_det_jac_affine_BLUE_DOWN*0.080605154129423817, abs_det_jac_affine_BLUE_DOWN*0.16356320182856121, abs_det_jac_affine_BLUE_DOWN*0.0030997579321792282, abs_det_jac_affine_BLUE_DOWN*0.032410690545436126, abs_det_jac_affine_BLUE_DOWN*0.065767460857085305, abs_det_jac_affine_BLUE_DOWN*0.0012463879784202093, abs_det_jac_affine_BLUE_DOWN*0.13345469765676804, abs_det_jac_affine_BLUE_DOWN*0.002529158472220073, abs_det_jac_affine_BLUE_DOWN*4.793119080794062e-5, abs_det_jac_affine_BLUE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_BLUE_DOWN*0.00075470637742922845, abs_det_jac_affine_BLUE_DOWN*0.0022140849621758063, abs_det_jac_affine_BLUE_DOWN*0.0018477200224347493, abs_det_jac_affine_BLUE_DOWN*0.024315138068613611, abs_det_jac_affine_BLUE_DOWN*0.071333412782766975, abs_det_jac_affine_BLUE_DOWN*0.059529863270376029, abs_det_jac_affine_BLUE_DOWN*0.20927110365887197, abs_det_jac_affine_BLUE_DOWN*0.17464298568178085, abs_det_jac_affine_BLUE_DOWN*0.14574478709475508, abs_det_jac_affine_BLUE_DOWN*0.12450054579698165, abs_det_jac_affine_BLUE_DOWN*0.076241779079863126, abs_det_jac_affine_BLUE_DOWN*0.00013249910677232994, abs_det_jac_affine_BLUE_DOWN*0.15197152472496969, abs_det_jac_affine_BLUE_DOWN*0.046689023249274604, abs_det_jac_affine_BLUE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_BLUE_DOWN*0.093064486909197122, abs_det_jac_affine_BLUE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_BLUE_DOWN*0.00016173496390708763, abs_det_jac_affine_BLUE_DOWN*0.18550396047976195, abs_det_jac_affine_BLUE_DOWN*0.00021985802016328927, abs_det_jac_affine_BLUE_DOWN*0.012181957275462504, abs_det_jac_affine_BLUE_DOWN*0.0018336830929379926, abs_det_jac_affine_BLUE_DOWN*0.00059211167385993745, abs_det_jac_affine_BLUE_DOWN*0.67498144007199112, abs_det_jac_affine_BLUE_DOWN*0.10160124737918669, abs_det_jac_affine_BLUE_DOWN*0.032807896240979378, abs_det_jac_affine_BLUE_DOWN*0.015293477503478755, abs_det_jac_affine_BLUE_DOWN*0.0049383923528547903, abs_det_jac_affine_BLUE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.080901699437494742, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
        {
           /* CellType.GREEN_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.20046443821120821, abs_det_jac_affine_GREEN_UP*0.080605154129423817, abs_det_jac_affine_GREEN_UP*0.16356320182856121, abs_det_jac_affine_GREEN_UP*0.0030997579321792282, abs_det_jac_affine_GREEN_UP*0.032410690545436126, abs_det_jac_affine_GREEN_UP*0.065767460857085305, abs_det_jac_affine_GREEN_UP*0.0012463879784202093, abs_det_jac_affine_GREEN_UP*0.13345469765676804, abs_det_jac_affine_GREEN_UP*0.002529158472220073, abs_det_jac_affine_GREEN_UP*4.793119080794062e-5, abs_det_jac_affine_GREEN_UP*2.3424983832091605e-5, abs_det_jac_affine_GREEN_UP*0.00075470637742922845, abs_det_jac_affine_GREEN_UP*0.0022140849621758063, abs_det_jac_affine_GREEN_UP*0.0018477200224347493, abs_det_jac_affine_GREEN_UP*0.024315138068613611, abs_det_jac_affine_GREEN_UP*0.071333412782766975, abs_det_jac_affine_GREEN_UP*0.059529863270376029, abs_det_jac_affine_GREEN_UP*0.20927110365887197, abs_det_jac_affine_GREEN_UP*0.17464298568178085, abs_det_jac_affine_GREEN_UP*0.14574478709475508, abs_det_jac_affine_GREEN_UP*0.12450054579698165, abs_det_jac_affine_GREEN_UP*0.076241779079863126, abs_det_jac_affine_GREEN_UP*0.00013249910677232994, abs_det_jac_affine_GREEN_UP*0.15197152472496969, abs_det_jac_affine_GREEN_UP*0.046689023249274604, abs_det_jac_affine_GREEN_UP*8.1139946513070487e-5, abs_det_jac_affine_GREEN_UP*0.093064486909197122, abs_det_jac_affine_GREEN_UP*1.4101153680155925e-7, abs_det_jac_affine_GREEN_UP*0.00016173496390708763, abs_det_jac_affine_GREEN_UP*0.18550396047976195, abs_det_jac_affine_GREEN_UP*0.00021985802016328927, abs_det_jac_affine_GREEN_UP*0.012181957275462504, abs_det_jac_affine_GREEN_UP*0.0018336830929379926, abs_det_jac_affine_GREEN_UP*0.00059211167385993745, abs_det_jac_affine_GREEN_UP*0.67498144007199112, abs_det_jac_affine_GREEN_UP*0.10160124737918669, abs_det_jac_affine_GREEN_UP*0.032807896240979378, abs_det_jac_affine_GREEN_UP*0.015293477503478755, abs_det_jac_affine_GREEN_UP*0.0049383923528547903, abs_det_jac_affine_GREEN_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.080901699437494742, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.20046443821120821, abs_det_jac_affine_GREEN_DOWN*0.080605154129423817, abs_det_jac_affine_GREEN_DOWN*0.16356320182856121, abs_det_jac_affine_GREEN_DOWN*0.0030997579321792282, abs_det_jac_affine_GREEN_DOWN*0.032410690545436126, abs_det_jac_affine_GREEN_DOWN*0.065767460857085305, abs_det_jac_affine_GREEN_DOWN*0.0012463879784202093, abs_det_jac_affine_GREEN_DOWN*0.13345469765676804, abs_det_jac_affine_GREEN_DOWN*0.002529158472220073, abs_det_jac_affine_GREEN_DOWN*4.793119080794062e-5, abs_det_jac_affine_GREEN_DOWN*2.3424983832091605e-5, abs_det_jac_affine_GREEN_DOWN*0.00075470637742922845, abs_det_jac_affine_GREEN_DOWN*0.0022140849621758063, abs_det_jac_affine_GREEN_DOWN*0.0018477200224347493, abs_det_jac_affine_GREEN_DOWN*0.024315138068613611, abs_det_jac_affine_GREEN_DOWN*0.071333412782766975, abs_det_jac_affine_GREEN_DOWN*0.059529863270376029, abs_det_jac_affine_GREEN_DOWN*0.20927110365887197, abs_det_jac_affine_GREEN_DOWN*0.17464298568178085, abs_det_jac_affine_GREEN_DOWN*0.14574478709475508, abs_det_jac_affine_GREEN_DOWN*0.12450054579698165, abs_det_jac_affine_GREEN_DOWN*0.076241779079863126, abs_det_jac_affine_GREEN_DOWN*0.00013249910677232994, abs_det_jac_affine_GREEN_DOWN*0.15197152472496969, abs_det_jac_affine_GREEN_DOWN*0.046689023249274604, abs_det_jac_affine_GREEN_DOWN*8.1139946513070487e-5, abs_det_jac_affine_GREEN_DOWN*0.093064486909197122, abs_det_jac_affine_GREEN_DOWN*1.4101153680155925e-7, abs_det_jac_affine_GREEN_DOWN*0.00016173496390708763, abs_det_jac_affine_GREEN_DOWN*0.18550396047976195, abs_det_jac_affine_GREEN_DOWN*0.00021985802016328927, abs_det_jac_affine_GREEN_DOWN*0.012181957275462504, abs_det_jac_affine_GREEN_DOWN*0.0018336830929379926, abs_det_jac_affine_GREEN_DOWN*0.00059211167385993745, abs_det_jac_affine_GREEN_DOWN*0.67498144007199112, abs_det_jac_affine_GREEN_DOWN*0.10160124737918669, abs_det_jac_affine_GREEN_DOWN*0.032807896240979378, abs_det_jac_affine_GREEN_DOWN*0.015293477503478755, abs_det_jac_affine_GREEN_DOWN*0.0049383923528547903, abs_det_jac_affine_GREEN_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.080901699437494742, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_1_1 = q_acc_1_1 + q_tmp_1_1;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMatDiag_0 = q_acc_0_0;
-             const real_t elMatDiag_1 = q_acc_1_1;
-             const real_t elMatDiag_2 = q_acc_2_2;
-             const real_t elMatDiag_3 = q_acc_3_3;
+             const walberla::float64 elMatDiag_0 = q_acc_0_0;
+             const walberla::float64 elMatDiag_1 = q_acc_1_1;
+             const walberla::float64 elMatDiag_2 = q_acc_2_2;
+             const walberla::float64 elMatDiag_3 = q_acc_3_3;
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))];
              _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1];
              _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1];
diff --git a/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp b/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp
index c9a6b2a1537eb31ab92c279a10c305dea2bae589..718b574d20de277c65d3ea16a2bfe7da912007b7 100644
--- a/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp
@@ -56,44 +56,44 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.16666666666666674, 0.16666666666666674, 0.16666666666666674};
+       const walberla::float64 _data_q_w [] = {0.16666666666666666, 0.16666666666666666, 0.16666666666666666};
    
-       const real_t tmp_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
-       const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
-       const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
-       const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
-       const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
+       const walberla::float64 tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY;
+       const walberla::float64 jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY;
+       const walberla::float64 jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY;
+       const walberla::float64 jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY;
+       const walberla::float64 abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY);
        {
           /* FaceType.GRAY */
-          const real_t _data_phi_psi_det_jac_aff_0_GRAY [] = {abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.11111111111111108, abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.027777777777777728, abs_det_jac_affine_GRAY*0.027777777777777748, abs_det_jac_affine_GRAY*0.11111111111111105, abs_det_jac_affine_GRAY*0.027777777777777766, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GRAY [] = {abs_det_jac_affine_GRAY*0.027777777777777804, abs_det_jac_affine_GRAY*0.02777777777777779, abs_det_jac_affine_GRAY*0.11111111111111116, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.027777777777777794, abs_det_jac_affine_GRAY*0.11111111111111113, abs_det_jac_affine_GRAY*0.027777777777777783, abs_det_jac_affine_GRAY*0.44444444444444442, abs_det_jac_affine_GRAY*0.1111111111111111, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.44444444444444453, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.11111111111111112, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776, abs_det_jac_affine_GRAY*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GRAY[6*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 2]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GRAY[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GRAY[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -101,19 +101,19 @@ void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
          
              std::vector< uint_t > _data_rowIdx( 3 );
              std::vector< uint_t > _data_colIdx( 3 );
-             std::vector< real_t > _data_mat( 9 );
+             std::vector< walberla::float64 > _data_mat( 9 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
@@ -126,57 +126,57 @@ void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_1_0));
-             _data_mat[4] = ((real_t)(elMat_1_1));
-             _data_mat[5] = ((real_t)(elMat_1_2));
-             _data_mat[6] = ((real_t)(elMat_2_0));
-             _data_mat[7] = ((real_t)(elMat_2_1));
-             _data_mat[8] = ((real_t)(elMat_2_2));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_1_0));
+             _data_mat[4] = ((walberla::float64)(elMat_1_1));
+             _data_mat[5] = ((walberla::float64)(elMat_1_2));
+             _data_mat[6] = ((walberla::float64)(elMat_2_0));
+             _data_mat[7] = ((walberla::float64)(elMat_2_1));
+             _data_mat[8] = ((walberla::float64)(elMat_2_2));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_4_BLUE = tmp_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_0_0_BLUE = tmp_1_BLUE;
-       const real_t p_affine_const_0_1_BLUE = tmp_2_BLUE;
-       const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_3_BLUE;
-       const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_4_BLUE;
-       const real_t p_affine_const_2_0_BLUE = tmp_1_BLUE + tmp_3_BLUE;
-       const real_t p_affine_const_2_1_BLUE = tmp_2_BLUE + tmp_4_BLUE;
-       const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
-       const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
-       const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
-       const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
-       const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
+       const walberla::float64 tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE;
+       const walberla::float64 p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE;
+       const walberla::float64 p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE;
+       const walberla::float64 p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE;
+       const walberla::float64 p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE;
+       const walberla::float64 jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE;
+       const walberla::float64 jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE;
+       const walberla::float64 jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE;
+       const walberla::float64 jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE;
+       const walberla::float64 abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE);
        {
           /* FaceType.BLUE */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE [] = {abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.11111111111111108, abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.027777777777777728, abs_det_jac_affine_BLUE*0.027777777777777748, abs_det_jac_affine_BLUE*0.11111111111111105, abs_det_jac_affine_BLUE*0.027777777777777766, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.4444444444444447};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE [] = {abs_det_jac_affine_BLUE*0.027777777777777804, abs_det_jac_affine_BLUE*0.02777777777777779, abs_det_jac_affine_BLUE*0.11111111111111116, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.027777777777777794, abs_det_jac_affine_BLUE*0.11111111111111113, abs_det_jac_affine_BLUE*0.027777777777777783, abs_det_jac_affine_BLUE*0.44444444444444442, abs_det_jac_affine_BLUE*0.1111111111111111, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.44444444444444453, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.11111111111111112, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776, abs_det_jac_affine_BLUE*0.027777777777777776};
       
           for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
              for (int64_t q = 0; q < 3; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE[6*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 2]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 4]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE[6*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE[6*q + 5]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -184,19 +184,19 @@ void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_1_2 = q_acc_1_2 + q_tmp_1_2;
                 q_acc_2_2 = q_acc_2_2 + q_tmp_2_2;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
          
              std::vector< uint_t > _data_rowIdx( 3 );
              std::vector< uint_t > _data_colIdx( 3 );
-             std::vector< real_t > _data_mat( 9 );
+             std::vector< walberla::float64 > _data_mat( 9 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]));
@@ -209,15 +209,15 @@ void P1ElementwiseMass::toMatrix_macro_2D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_1_0));
-             _data_mat[4] = ((real_t)(elMat_1_1));
-             _data_mat[5] = ((real_t)(elMat_1_2));
-             _data_mat[6] = ((real_t)(elMat_2_0));
-             _data_mat[7] = ((real_t)(elMat_2_1));
-             _data_mat[8] = ((real_t)(elMat_2_2));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_1_0));
+             _data_mat[4] = ((walberla::float64)(elMat_1_1));
+             _data_mat[5] = ((walberla::float64)(elMat_1_2));
+             _data_mat[6] = ((walberla::float64)(elMat_2_0));
+             _data_mat[7] = ((walberla::float64)(elMat_2_1));
+             _data_mat[8] = ((walberla::float64)(elMat_2_2));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
diff --git a/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp b/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp
index 392a0b392e17ceb68593ebb976cf4f1f4ef98ff3..e5cce481c61118fb71adbe548ffd49a60bb9074e 100644
--- a/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp
+++ b/operators/mass/noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp
@@ -56,64 +56,64 @@ namespace hyteg {
 
 namespace operatorgeneration {
 
-void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const
+void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t * RESTRICT  _data_src, walberla::float64 macro_vertex_coord_id_0comp0, walberla::float64 macro_vertex_coord_id_0comp1, walberla::float64 macro_vertex_coord_id_0comp2, walberla::float64 macro_vertex_coord_id_1comp0, walberla::float64 macro_vertex_coord_id_1comp1, walberla::float64 macro_vertex_coord_id_1comp2, walberla::float64 macro_vertex_coord_id_2comp0, walberla::float64 macro_vertex_coord_id_2comp1, walberla::float64 macro_vertex_coord_id_2comp2, walberla::float64 macro_vertex_coord_id_3comp0, walberla::float64 macro_vertex_coord_id_3comp1, walberla::float64 macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, walberla::float64 micro_edges_per_macro_edge_float ) const
 {
     {
-       const real_t _data_q_w [] = {0.050086823222829389, 0.046462929447761279, 0.05318232258357912, 0.016934591412496786};
+       const walberla::float64 _data_q_w [] = {0.041666666666666657, 0.041666666666666657, 0.041666666666666657, 0.041666666666666657};
    
-       const real_t tmp_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
-       const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
-       const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
-       const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
-       const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
-       const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
-       const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
-       const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
-       const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
-       const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
-       const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
-       const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
-       const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
+       const walberla::float64 tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0;
+       const walberla::float64 p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1;
+       const walberla::float64 p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2;
+       const walberla::float64 p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP;
+       const walberla::float64 jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP;
+       const walberla::float64 jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP;
+       const walberla::float64 jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP;
+       const walberla::float64 jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP;
+       const walberla::float64 jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP;
+       const walberla::float64 abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP);
        {
           /* CellType.WHITE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.20046443821120821, abs_det_jac_affine_WHITE_UP*0.080605154129423817, abs_det_jac_affine_WHITE_UP*0.16356320182856121, abs_det_jac_affine_WHITE_UP*0.0030997579321792282, abs_det_jac_affine_WHITE_UP*0.032410690545436126, abs_det_jac_affine_WHITE_UP*0.065767460857085305, abs_det_jac_affine_WHITE_UP*0.0012463879784202093, abs_det_jac_affine_WHITE_UP*0.13345469765676804, abs_det_jac_affine_WHITE_UP*0.002529158472220073, abs_det_jac_affine_WHITE_UP*4.793119080794062e-5, abs_det_jac_affine_WHITE_UP*2.3424983832091605e-5, abs_det_jac_affine_WHITE_UP*0.00075470637742922845, abs_det_jac_affine_WHITE_UP*0.0022140849621758063, abs_det_jac_affine_WHITE_UP*0.0018477200224347493, abs_det_jac_affine_WHITE_UP*0.024315138068613611, abs_det_jac_affine_WHITE_UP*0.071333412782766975, abs_det_jac_affine_WHITE_UP*0.059529863270376029, abs_det_jac_affine_WHITE_UP*0.20927110365887197, abs_det_jac_affine_WHITE_UP*0.17464298568178085, abs_det_jac_affine_WHITE_UP*0.14574478709475508, abs_det_jac_affine_WHITE_UP*0.12450054579698165, abs_det_jac_affine_WHITE_UP*0.076241779079863126, abs_det_jac_affine_WHITE_UP*0.00013249910677232994, abs_det_jac_affine_WHITE_UP*0.15197152472496969, abs_det_jac_affine_WHITE_UP*0.046689023249274604, abs_det_jac_affine_WHITE_UP*8.1139946513070487e-5, abs_det_jac_affine_WHITE_UP*0.093064486909197122, abs_det_jac_affine_WHITE_UP*1.4101153680155925e-7, abs_det_jac_affine_WHITE_UP*0.00016173496390708763, abs_det_jac_affine_WHITE_UP*0.18550396047976195, abs_det_jac_affine_WHITE_UP*0.00021985802016328927, abs_det_jac_affine_WHITE_UP*0.012181957275462504, abs_det_jac_affine_WHITE_UP*0.0018336830929379926, abs_det_jac_affine_WHITE_UP*0.00059211167385993745, abs_det_jac_affine_WHITE_UP*0.67498144007199112, abs_det_jac_affine_WHITE_UP*0.10160124737918669, abs_det_jac_affine_WHITE_UP*0.032807896240979378, abs_det_jac_affine_WHITE_UP*0.015293477503478755, abs_det_jac_affine_WHITE_UP*0.0049383923528547903, abs_det_jac_affine_WHITE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_UP [] = {abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.01909830056250526, abs_det_jac_affine_WHITE_UP*0.080901699437494742, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.01909830056250527, abs_det_jac_affine_WHITE_UP*0.080901699437494756, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.019098300562505263, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.34270509831248419, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.080901699437494728, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256, abs_det_jac_affine_WHITE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -125,26 +125,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -159,92 +159,92 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_3_WHITE_DOWN = tmp_1_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t tmp_4_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_WHITE_DOWN = tmp_4_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t tmp_7_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_9_WHITE_DOWN = tmp_7_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t tmp_10_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_11_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_12_WHITE_DOWN = tmp_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_WHITE_DOWN = tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_0_1_WHITE_DOWN = tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_0_2_WHITE_DOWN = tmp_9_WHITE_DOWN;
-       const real_t p_affine_const_1_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_2_WHITE_DOWN;
-       const real_t p_affine_const_1_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_5_WHITE_DOWN;
-       const real_t p_affine_const_1_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_8_WHITE_DOWN;
-       const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_10_WHITE_DOWN + tmp_1_WHITE_DOWN;
-       const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_11_WHITE_DOWN + tmp_4_WHITE_DOWN;
-       const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_12_WHITE_DOWN + tmp_7_WHITE_DOWN;
-       const real_t p_affine_const_3_0_WHITE_DOWN = tmp_10_WHITE_DOWN + tmp_3_WHITE_DOWN;
-       const real_t p_affine_const_3_1_WHITE_DOWN = tmp_11_WHITE_DOWN + tmp_6_WHITE_DOWN;
-       const real_t p_affine_const_3_2_WHITE_DOWN = tmp_12_WHITE_DOWN + tmp_9_WHITE_DOWN;
-       const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
-       const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
-       const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
-       const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
-       const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
-       const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
-       const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
-       const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
-       const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
-       const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN;
+       const walberla::float64 p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN;
+       const walberla::float64 p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN;
+       const walberla::float64 p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN;
+       const walberla::float64 jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN;
+       const walberla::float64 abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN);
        {
           /* CellType.WHITE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.20046443821120821, abs_det_jac_affine_WHITE_DOWN*0.080605154129423817, abs_det_jac_affine_WHITE_DOWN*0.16356320182856121, abs_det_jac_affine_WHITE_DOWN*0.0030997579321792282, abs_det_jac_affine_WHITE_DOWN*0.032410690545436126, abs_det_jac_affine_WHITE_DOWN*0.065767460857085305, abs_det_jac_affine_WHITE_DOWN*0.0012463879784202093, abs_det_jac_affine_WHITE_DOWN*0.13345469765676804, abs_det_jac_affine_WHITE_DOWN*0.002529158472220073, abs_det_jac_affine_WHITE_DOWN*4.793119080794062e-5, abs_det_jac_affine_WHITE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_WHITE_DOWN*0.00075470637742922845, abs_det_jac_affine_WHITE_DOWN*0.0022140849621758063, abs_det_jac_affine_WHITE_DOWN*0.0018477200224347493, abs_det_jac_affine_WHITE_DOWN*0.024315138068613611, abs_det_jac_affine_WHITE_DOWN*0.071333412782766975, abs_det_jac_affine_WHITE_DOWN*0.059529863270376029, abs_det_jac_affine_WHITE_DOWN*0.20927110365887197, abs_det_jac_affine_WHITE_DOWN*0.17464298568178085, abs_det_jac_affine_WHITE_DOWN*0.14574478709475508, abs_det_jac_affine_WHITE_DOWN*0.12450054579698165, abs_det_jac_affine_WHITE_DOWN*0.076241779079863126, abs_det_jac_affine_WHITE_DOWN*0.00013249910677232994, abs_det_jac_affine_WHITE_DOWN*0.15197152472496969, abs_det_jac_affine_WHITE_DOWN*0.046689023249274604, abs_det_jac_affine_WHITE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_WHITE_DOWN*0.093064486909197122, abs_det_jac_affine_WHITE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_WHITE_DOWN*0.00016173496390708763, abs_det_jac_affine_WHITE_DOWN*0.18550396047976195, abs_det_jac_affine_WHITE_DOWN*0.00021985802016328927, abs_det_jac_affine_WHITE_DOWN*0.012181957275462504, abs_det_jac_affine_WHITE_DOWN*0.0018336830929379926, abs_det_jac_affine_WHITE_DOWN*0.00059211167385993745, abs_det_jac_affine_WHITE_DOWN*0.67498144007199112, abs_det_jac_affine_WHITE_DOWN*0.10160124737918669, abs_det_jac_affine_WHITE_DOWN*0.032807896240979378, abs_det_jac_affine_WHITE_DOWN*0.015293477503478755, abs_det_jac_affine_WHITE_DOWN*0.0049383923528547903, abs_det_jac_affine_WHITE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN [] = {abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.01909830056250526, abs_det_jac_affine_WHITE_DOWN*0.080901699437494742, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.01909830056250527, abs_det_jac_affine_WHITE_DOWN*0.080901699437494756, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.019098300562505263, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.34270509831248419, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.080901699437494728, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256, abs_det_jac_affine_WHITE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_WHITE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -256,26 +256,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -290,86 +290,86 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_5_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_6_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_0_0_BLUE_UP = tmp_1_BLUE_UP;
-       const real_t p_affine_const_0_1_BLUE_UP = tmp_2_BLUE_UP;
-       const real_t p_affine_const_0_2_BLUE_UP = tmp_3_BLUE_UP;
-       const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_UP;
-       const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_5_BLUE_UP;
-       const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_6_BLUE_UP;
-       const real_t p_affine_const_2_0_BLUE_UP = tmp_1_BLUE_UP + tmp_4_BLUE_UP;
-       const real_t p_affine_const_2_1_BLUE_UP = tmp_2_BLUE_UP + tmp_5_BLUE_UP;
-       const real_t p_affine_const_2_2_BLUE_UP = tmp_3_BLUE_UP + tmp_6_BLUE_UP;
-       const real_t p_affine_const_3_0_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_1_BLUE_UP;
-       const real_t p_affine_const_3_1_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_2_BLUE_UP;
-       const real_t p_affine_const_3_2_BLUE_UP = tmp_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_3_BLUE_UP;
-       const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
-       const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
-       const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
-       const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
-       const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
-       const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
-       const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
-       const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
-       const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
-       const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
+       const walberla::float64 tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP;
+       const walberla::float64 p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP;
+       const walberla::float64 p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP;
+       const walberla::float64 p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP;
+       const walberla::float64 p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP;
+       const walberla::float64 p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP;
+       const walberla::float64 jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP;
+       const walberla::float64 jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP;
+       const walberla::float64 jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP;
+       const walberla::float64 jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP;
+       const walberla::float64 jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP;
+       const walberla::float64 jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP;
+       const walberla::float64 abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP);
        {
           /* CellType.BLUE_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.20046443821120821, abs_det_jac_affine_BLUE_UP*0.080605154129423817, abs_det_jac_affine_BLUE_UP*0.16356320182856121, abs_det_jac_affine_BLUE_UP*0.0030997579321792282, abs_det_jac_affine_BLUE_UP*0.032410690545436126, abs_det_jac_affine_BLUE_UP*0.065767460857085305, abs_det_jac_affine_BLUE_UP*0.0012463879784202093, abs_det_jac_affine_BLUE_UP*0.13345469765676804, abs_det_jac_affine_BLUE_UP*0.002529158472220073, abs_det_jac_affine_BLUE_UP*4.793119080794062e-5, abs_det_jac_affine_BLUE_UP*2.3424983832091605e-5, abs_det_jac_affine_BLUE_UP*0.00075470637742922845, abs_det_jac_affine_BLUE_UP*0.0022140849621758063, abs_det_jac_affine_BLUE_UP*0.0018477200224347493, abs_det_jac_affine_BLUE_UP*0.024315138068613611, abs_det_jac_affine_BLUE_UP*0.071333412782766975, abs_det_jac_affine_BLUE_UP*0.059529863270376029, abs_det_jac_affine_BLUE_UP*0.20927110365887197, abs_det_jac_affine_BLUE_UP*0.17464298568178085, abs_det_jac_affine_BLUE_UP*0.14574478709475508, abs_det_jac_affine_BLUE_UP*0.12450054579698165, abs_det_jac_affine_BLUE_UP*0.076241779079863126, abs_det_jac_affine_BLUE_UP*0.00013249910677232994, abs_det_jac_affine_BLUE_UP*0.15197152472496969, abs_det_jac_affine_BLUE_UP*0.046689023249274604, abs_det_jac_affine_BLUE_UP*8.1139946513070487e-5, abs_det_jac_affine_BLUE_UP*0.093064486909197122, abs_det_jac_affine_BLUE_UP*1.4101153680155925e-7, abs_det_jac_affine_BLUE_UP*0.00016173496390708763, abs_det_jac_affine_BLUE_UP*0.18550396047976195, abs_det_jac_affine_BLUE_UP*0.00021985802016328927, abs_det_jac_affine_BLUE_UP*0.012181957275462504, abs_det_jac_affine_BLUE_UP*0.0018336830929379926, abs_det_jac_affine_BLUE_UP*0.00059211167385993745, abs_det_jac_affine_BLUE_UP*0.67498144007199112, abs_det_jac_affine_BLUE_UP*0.10160124737918669, abs_det_jac_affine_BLUE_UP*0.032807896240979378, abs_det_jac_affine_BLUE_UP*0.015293477503478755, abs_det_jac_affine_BLUE_UP*0.0049383923528547903, abs_det_jac_affine_BLUE_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_UP [] = {abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.01909830056250526, abs_det_jac_affine_BLUE_UP*0.080901699437494742, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.01909830056250527, abs_det_jac_affine_BLUE_UP*0.080901699437494756, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.019098300562505263, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.34270509831248419, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.080901699437494728, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256, abs_det_jac_affine_BLUE_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -381,26 +381,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -415,89 +415,89 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_BLUE_DOWN;
-       const real_t tmp_6_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_6_BLUE_DOWN;
-       const real_t tmp_8_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t tmp_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_8_BLUE_DOWN;
-       const real_t p_affine_const_0_0_BLUE_DOWN = tmp_1_BLUE_DOWN;
-       const real_t p_affine_const_0_1_BLUE_DOWN = tmp_2_BLUE_DOWN;
-       const real_t p_affine_const_0_2_BLUE_DOWN = tmp_3_BLUE_DOWN;
-       const real_t p_affine_const_1_0_BLUE_DOWN = tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_1_1_BLUE_DOWN = tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_1_2_BLUE_DOWN = tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_2_0_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_5_BLUE_DOWN;
-       const real_t p_affine_const_2_1_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_7_BLUE_DOWN;
-       const real_t p_affine_const_2_2_BLUE_DOWN = tmp_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_9_BLUE_DOWN;
-       const real_t p_affine_const_3_0_BLUE_DOWN = tmp_1_BLUE_DOWN + tmp_4_BLUE_DOWN;
-       const real_t p_affine_const_3_1_BLUE_DOWN = tmp_2_BLUE_DOWN + tmp_6_BLUE_DOWN;
-       const real_t p_affine_const_3_2_BLUE_DOWN = tmp_3_BLUE_DOWN + tmp_8_BLUE_DOWN;
-       const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
-       const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
-       const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
-       const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
-       const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
-       const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
-       const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
-       const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
-       const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
-       const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
+       const walberla::float64 tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN;
+       const walberla::float64 p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN;
+       const walberla::float64 p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN;
+       const walberla::float64 p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN;
+       const walberla::float64 jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN;
+       const walberla::float64 abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN);
        {
           /* CellType.BLUE_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.20046443821120821, abs_det_jac_affine_BLUE_DOWN*0.080605154129423817, abs_det_jac_affine_BLUE_DOWN*0.16356320182856121, abs_det_jac_affine_BLUE_DOWN*0.0030997579321792282, abs_det_jac_affine_BLUE_DOWN*0.032410690545436126, abs_det_jac_affine_BLUE_DOWN*0.065767460857085305, abs_det_jac_affine_BLUE_DOWN*0.0012463879784202093, abs_det_jac_affine_BLUE_DOWN*0.13345469765676804, abs_det_jac_affine_BLUE_DOWN*0.002529158472220073, abs_det_jac_affine_BLUE_DOWN*4.793119080794062e-5, abs_det_jac_affine_BLUE_DOWN*2.3424983832091605e-5, abs_det_jac_affine_BLUE_DOWN*0.00075470637742922845, abs_det_jac_affine_BLUE_DOWN*0.0022140849621758063, abs_det_jac_affine_BLUE_DOWN*0.0018477200224347493, abs_det_jac_affine_BLUE_DOWN*0.024315138068613611, abs_det_jac_affine_BLUE_DOWN*0.071333412782766975, abs_det_jac_affine_BLUE_DOWN*0.059529863270376029, abs_det_jac_affine_BLUE_DOWN*0.20927110365887197, abs_det_jac_affine_BLUE_DOWN*0.17464298568178085, abs_det_jac_affine_BLUE_DOWN*0.14574478709475508, abs_det_jac_affine_BLUE_DOWN*0.12450054579698165, abs_det_jac_affine_BLUE_DOWN*0.076241779079863126, abs_det_jac_affine_BLUE_DOWN*0.00013249910677232994, abs_det_jac_affine_BLUE_DOWN*0.15197152472496969, abs_det_jac_affine_BLUE_DOWN*0.046689023249274604, abs_det_jac_affine_BLUE_DOWN*8.1139946513070487e-5, abs_det_jac_affine_BLUE_DOWN*0.093064486909197122, abs_det_jac_affine_BLUE_DOWN*1.4101153680155925e-7, abs_det_jac_affine_BLUE_DOWN*0.00016173496390708763, abs_det_jac_affine_BLUE_DOWN*0.18550396047976195, abs_det_jac_affine_BLUE_DOWN*0.00021985802016328927, abs_det_jac_affine_BLUE_DOWN*0.012181957275462504, abs_det_jac_affine_BLUE_DOWN*0.0018336830929379926, abs_det_jac_affine_BLUE_DOWN*0.00059211167385993745, abs_det_jac_affine_BLUE_DOWN*0.67498144007199112, abs_det_jac_affine_BLUE_DOWN*0.10160124737918669, abs_det_jac_affine_BLUE_DOWN*0.032807896240979378, abs_det_jac_affine_BLUE_DOWN*0.015293477503478755, abs_det_jac_affine_BLUE_DOWN*0.0049383923528547903, abs_det_jac_affine_BLUE_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN [] = {abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.01909830056250526, abs_det_jac_affine_BLUE_DOWN*0.080901699437494742, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.01909830056250527, abs_det_jac_affine_BLUE_DOWN*0.080901699437494756, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.019098300562505263, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.34270509831248419, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.080901699437494728, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256, abs_det_jac_affine_BLUE_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_BLUE_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -509,26 +509,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]));
@@ -543,86 +543,86 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_4_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_5_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_6_GREEN_UP = tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_UP = tmp_1_GREEN_UP;
-       const real_t p_affine_const_0_1_GREEN_UP = tmp_2_GREEN_UP;
-       const real_t p_affine_const_0_2_GREEN_UP = tmp_3_GREEN_UP;
-       const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_UP;
-       const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_UP;
-       const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_UP;
-       const real_t p_affine_const_3_0_GREEN_UP = tmp_1_GREEN_UP + tmp_4_GREEN_UP;
-       const real_t p_affine_const_3_1_GREEN_UP = tmp_2_GREEN_UP + tmp_5_GREEN_UP;
-       const real_t p_affine_const_3_2_GREEN_UP = tmp_3_GREEN_UP + tmp_6_GREEN_UP;
-       const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
-       const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
-       const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
-       const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
-       const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
-       const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
-       const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
-       const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
-       const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
-       const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
+       const walberla::float64 tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP;
+       const walberla::float64 p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP;
+       const walberla::float64 p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP;
+       const walberla::float64 p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP;
+       const walberla::float64 p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP;
+       const walberla::float64 p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP;
+       const walberla::float64 jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP;
+       const walberla::float64 jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP;
+       const walberla::float64 jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP;
+       const walberla::float64 jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP;
+       const walberla::float64 jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP;
+       const walberla::float64 jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP;
+       const walberla::float64 abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP);
        {
           /* CellType.GREEN_UP */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.20046443821120821, abs_det_jac_affine_GREEN_UP*0.080605154129423817, abs_det_jac_affine_GREEN_UP*0.16356320182856121, abs_det_jac_affine_GREEN_UP*0.0030997579321792282, abs_det_jac_affine_GREEN_UP*0.032410690545436126, abs_det_jac_affine_GREEN_UP*0.065767460857085305, abs_det_jac_affine_GREEN_UP*0.0012463879784202093, abs_det_jac_affine_GREEN_UP*0.13345469765676804, abs_det_jac_affine_GREEN_UP*0.002529158472220073, abs_det_jac_affine_GREEN_UP*4.793119080794062e-5, abs_det_jac_affine_GREEN_UP*2.3424983832091605e-5, abs_det_jac_affine_GREEN_UP*0.00075470637742922845, abs_det_jac_affine_GREEN_UP*0.0022140849621758063, abs_det_jac_affine_GREEN_UP*0.0018477200224347493, abs_det_jac_affine_GREEN_UP*0.024315138068613611, abs_det_jac_affine_GREEN_UP*0.071333412782766975, abs_det_jac_affine_GREEN_UP*0.059529863270376029, abs_det_jac_affine_GREEN_UP*0.20927110365887197, abs_det_jac_affine_GREEN_UP*0.17464298568178085, abs_det_jac_affine_GREEN_UP*0.14574478709475508, abs_det_jac_affine_GREEN_UP*0.12450054579698165, abs_det_jac_affine_GREEN_UP*0.076241779079863126, abs_det_jac_affine_GREEN_UP*0.00013249910677232994, abs_det_jac_affine_GREEN_UP*0.15197152472496969, abs_det_jac_affine_GREEN_UP*0.046689023249274604, abs_det_jac_affine_GREEN_UP*8.1139946513070487e-5, abs_det_jac_affine_GREEN_UP*0.093064486909197122, abs_det_jac_affine_GREEN_UP*1.4101153680155925e-7, abs_det_jac_affine_GREEN_UP*0.00016173496390708763, abs_det_jac_affine_GREEN_UP*0.18550396047976195, abs_det_jac_affine_GREEN_UP*0.00021985802016328927, abs_det_jac_affine_GREEN_UP*0.012181957275462504, abs_det_jac_affine_GREEN_UP*0.0018336830929379926, abs_det_jac_affine_GREEN_UP*0.00059211167385993745, abs_det_jac_affine_GREEN_UP*0.67498144007199112, abs_det_jac_affine_GREEN_UP*0.10160124737918669, abs_det_jac_affine_GREEN_UP*0.032807896240979378, abs_det_jac_affine_GREEN_UP*0.015293477503478755, abs_det_jac_affine_GREEN_UP*0.0049383923528547903, abs_det_jac_affine_GREEN_UP*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_UP [] = {abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.01909830056250526, abs_det_jac_affine_GREEN_UP*0.080901699437494742, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.01909830056250527, abs_det_jac_affine_GREEN_UP*0.080901699437494756, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.019098300562505263, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.34270509831248419, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.080901699437494728, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256, abs_det_jac_affine_GREEN_UP*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_UP[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_UP[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -634,26 +634,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
@@ -668,89 +668,89 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );
           }
        }
-       const real_t tmp_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
-       const real_t tmp_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
-       const real_t tmp_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
-       const real_t tmp_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
-       const real_t tmp_4_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
-       const real_t tmp_5_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
-       const real_t tmp_6_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
-       const real_t tmp_7_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
-       const real_t tmp_8_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
-       const real_t tmp_9_GREEN_DOWN = tmp_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
-       const real_t p_affine_const_0_0_GREEN_DOWN = tmp_1_GREEN_DOWN;
-       const real_t p_affine_const_0_1_GREEN_DOWN = tmp_2_GREEN_DOWN;
-       const real_t p_affine_const_0_2_GREEN_DOWN = tmp_3_GREEN_DOWN;
-       const real_t p_affine_const_1_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_4_GREEN_DOWN;
-       const real_t p_affine_const_1_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_5_GREEN_DOWN;
-       const real_t p_affine_const_1_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_6_GREEN_DOWN;
-       const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_4_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_5_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_6_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t p_affine_const_3_0_GREEN_DOWN = tmp_1_GREEN_DOWN + tmp_7_GREEN_DOWN;
-       const real_t p_affine_const_3_1_GREEN_DOWN = tmp_2_GREEN_DOWN + tmp_8_GREEN_DOWN;
-       const real_t p_affine_const_3_2_GREEN_DOWN = tmp_3_GREEN_DOWN + tmp_9_GREEN_DOWN;
-       const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
-       const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
-       const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
-       const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
-       const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
-       const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
-       const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
-       const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
-       const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
-       const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
+       const walberla::float64 tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0;
+       const walberla::float64 tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0);
+       const walberla::float64 tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1);
+       const walberla::float64 tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2);
+       const walberla::float64 tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0);
+       const walberla::float64 tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1);
+       const walberla::float64 tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2);
+       const walberla::float64 tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0);
+       const walberla::float64 tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1);
+       const walberla::float64 tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2);
+       const walberla::float64 p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN;
+       const walberla::float64 p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN;
+       const walberla::float64 p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN;
+       const walberla::float64 p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN;
+       const walberla::float64 jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN;
+       const walberla::float64 abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN);
        {
           /* CellType.GREEN_DOWN */
-          const real_t _data_phi_psi_det_jac_aff_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.20046443821120821, abs_det_jac_affine_GREEN_DOWN*0.080605154129423817, abs_det_jac_affine_GREEN_DOWN*0.16356320182856121, abs_det_jac_affine_GREEN_DOWN*0.0030997579321792282, abs_det_jac_affine_GREEN_DOWN*0.032410690545436126, abs_det_jac_affine_GREEN_DOWN*0.065767460857085305, abs_det_jac_affine_GREEN_DOWN*0.0012463879784202093, abs_det_jac_affine_GREEN_DOWN*0.13345469765676804, abs_det_jac_affine_GREEN_DOWN*0.002529158472220073, abs_det_jac_affine_GREEN_DOWN*4.793119080794062e-5, abs_det_jac_affine_GREEN_DOWN*2.3424983832091605e-5, abs_det_jac_affine_GREEN_DOWN*0.00075470637742922845, abs_det_jac_affine_GREEN_DOWN*0.0022140849621758063, abs_det_jac_affine_GREEN_DOWN*0.0018477200224347493, abs_det_jac_affine_GREEN_DOWN*0.024315138068613611, abs_det_jac_affine_GREEN_DOWN*0.071333412782766975, abs_det_jac_affine_GREEN_DOWN*0.059529863270376029, abs_det_jac_affine_GREEN_DOWN*0.20927110365887197, abs_det_jac_affine_GREEN_DOWN*0.17464298568178085, abs_det_jac_affine_GREEN_DOWN*0.14574478709475508, abs_det_jac_affine_GREEN_DOWN*0.12450054579698165, abs_det_jac_affine_GREEN_DOWN*0.076241779079863126, abs_det_jac_affine_GREEN_DOWN*0.00013249910677232994, abs_det_jac_affine_GREEN_DOWN*0.15197152472496969, abs_det_jac_affine_GREEN_DOWN*0.046689023249274604, abs_det_jac_affine_GREEN_DOWN*8.1139946513070487e-5, abs_det_jac_affine_GREEN_DOWN*0.093064486909197122, abs_det_jac_affine_GREEN_DOWN*1.4101153680155925e-7, abs_det_jac_affine_GREEN_DOWN*0.00016173496390708763, abs_det_jac_affine_GREEN_DOWN*0.18550396047976195, abs_det_jac_affine_GREEN_DOWN*0.00021985802016328927, abs_det_jac_affine_GREEN_DOWN*0.012181957275462504, abs_det_jac_affine_GREEN_DOWN*0.0018336830929379926, abs_det_jac_affine_GREEN_DOWN*0.00059211167385993745, abs_det_jac_affine_GREEN_DOWN*0.67498144007199112, abs_det_jac_affine_GREEN_DOWN*0.10160124737918669, abs_det_jac_affine_GREEN_DOWN*0.032807896240979378, abs_det_jac_affine_GREEN_DOWN*0.015293477503478755, abs_det_jac_affine_GREEN_DOWN*0.0049383923528547903, abs_det_jac_affine_GREEN_DOWN*0.0015946483738042757};
+          const walberla::float64 _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN [] = {abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.01909830056250526, abs_det_jac_affine_GREEN_DOWN*0.080901699437494742, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.01909830056250527, abs_det_jac_affine_GREEN_DOWN*0.080901699437494756, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.019098300562505263, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.34270509831248419, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.080901699437494728, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256, abs_det_jac_affine_GREEN_DOWN*0.019098300562505256};
       
           for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1)
           for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1)
           for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1)
           {
-             real_t q_acc_0_0 = 0.0;
-             real_t q_acc_0_1 = 0.0;
-             real_t q_acc_0_2 = 0.0;
-             real_t q_acc_0_3 = 0.0;
-             real_t q_acc_1_1 = 0.0;
-             real_t q_acc_1_2 = 0.0;
-             real_t q_acc_1_3 = 0.0;
-             real_t q_acc_2_2 = 0.0;
-             real_t q_acc_2_3 = 0.0;
-             real_t q_acc_3_3 = 0.0;
+             walberla::float64 q_acc_0_0 = 0.0;
+             walberla::float64 q_acc_0_1 = 0.0;
+             walberla::float64 q_acc_0_2 = 0.0;
+             walberla::float64 q_acc_0_3 = 0.0;
+             walberla::float64 q_acc_1_1 = 0.0;
+             walberla::float64 q_acc_1_2 = 0.0;
+             walberla::float64 q_acc_1_3 = 0.0;
+             walberla::float64 q_acc_2_2 = 0.0;
+             walberla::float64 q_acc_2_3 = 0.0;
+             walberla::float64 q_acc_3_3 = 0.0;
              for (int64_t q = 0; q < 4; q += 1)
              {
-                const real_t q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q]*_data_q_w[q];
-                const real_t q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
-                const real_t q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
-                const real_t q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
-                const real_t q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
-                const real_t q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
-                const real_t q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
-                const real_t q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
-                const real_t q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
-                const real_t q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_0 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 1]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 2]*_data_q_w[q];
+                const walberla::float64 q_tmp_0_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 3]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_1 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 4]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 5]*_data_q_w[q];
+                const walberla::float64 q_tmp_1_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 6]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_2 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 7]*_data_q_w[q];
+                const walberla::float64 q_tmp_2_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 8]*_data_q_w[q];
+                const walberla::float64 q_tmp_3_3 = _data_phi_psi_det_jac_aff_0_0_GREEN_DOWN[10*q + 9]*_data_q_w[q];
                 q_acc_0_0 = q_acc_0_0 + q_tmp_0_0;
                 q_acc_0_1 = q_acc_0_1 + q_tmp_0_1;
                 q_acc_0_2 = q_acc_0_2 + q_tmp_0_2;
@@ -762,26 +762,26 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
                 q_acc_2_3 = q_acc_2_3 + q_tmp_2_3;
                 q_acc_3_3 = q_acc_3_3 + q_tmp_3_3;
              }
-             const real_t elMat_0_0 = q_acc_0_0;
-             const real_t elMat_0_1 = q_acc_0_1;
-             const real_t elMat_0_2 = q_acc_0_2;
-             const real_t elMat_0_3 = q_acc_0_3;
-             const real_t elMat_1_0 = q_acc_0_1;
-             const real_t elMat_1_1 = q_acc_1_1;
-             const real_t elMat_1_2 = q_acc_1_2;
-             const real_t elMat_1_3 = q_acc_1_3;
-             const real_t elMat_2_0 = q_acc_0_2;
-             const real_t elMat_2_1 = q_acc_1_2;
-             const real_t elMat_2_2 = q_acc_2_2;
-             const real_t elMat_2_3 = q_acc_2_3;
-             const real_t elMat_3_0 = q_acc_0_3;
-             const real_t elMat_3_1 = q_acc_1_3;
-             const real_t elMat_3_2 = q_acc_2_3;
-             const real_t elMat_3_3 = q_acc_3_3;
+             const walberla::float64 elMat_0_0 = q_acc_0_0;
+             const walberla::float64 elMat_0_1 = q_acc_0_1;
+             const walberla::float64 elMat_0_2 = q_acc_0_2;
+             const walberla::float64 elMat_0_3 = q_acc_0_3;
+             const walberla::float64 elMat_1_0 = q_acc_0_1;
+             const walberla::float64 elMat_1_1 = q_acc_1_1;
+             const walberla::float64 elMat_1_2 = q_acc_1_2;
+             const walberla::float64 elMat_1_3 = q_acc_1_3;
+             const walberla::float64 elMat_2_0 = q_acc_0_2;
+             const walberla::float64 elMat_2_1 = q_acc_1_2;
+             const walberla::float64 elMat_2_2 = q_acc_2_2;
+             const walberla::float64 elMat_2_3 = q_acc_2_3;
+             const walberla::float64 elMat_3_0 = q_acc_0_3;
+             const walberla::float64 elMat_3_1 = q_acc_1_3;
+             const walberla::float64 elMat_3_2 = q_acc_2_3;
+             const walberla::float64 elMat_3_3 = q_acc_3_3;
          
              std::vector< uint_t > _data_rowIdx( 4 );
              std::vector< uint_t > _data_colIdx( 4 );
-             std::vector< real_t > _data_mat( 16 );
+             std::vector< walberla::float64 > _data_mat( 16 );
          
              _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]));
              _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]));
@@ -796,22 +796,22 @@ void P1ElementwiseMass::toMatrix_macro_3D( idx_t * RESTRICT  _data_dst, idx_t *
          
          
          
-             _data_mat[0] = ((real_t)(elMat_0_0));
-             _data_mat[1] = ((real_t)(elMat_0_1));
-             _data_mat[2] = ((real_t)(elMat_0_2));
-             _data_mat[3] = ((real_t)(elMat_0_3));
-             _data_mat[4] = ((real_t)(elMat_1_0));
-             _data_mat[5] = ((real_t)(elMat_1_1));
-             _data_mat[6] = ((real_t)(elMat_1_2));
-             _data_mat[7] = ((real_t)(elMat_1_3));
-             _data_mat[8] = ((real_t)(elMat_2_0));
-             _data_mat[9] = ((real_t)(elMat_2_1));
-             _data_mat[10] = ((real_t)(elMat_2_2));
-             _data_mat[11] = ((real_t)(elMat_2_3));
-             _data_mat[12] = ((real_t)(elMat_3_0));
-             _data_mat[13] = ((real_t)(elMat_3_1));
-             _data_mat[14] = ((real_t)(elMat_3_2));
-             _data_mat[15] = ((real_t)(elMat_3_3));
+             _data_mat[0] = ((walberla::float64)(elMat_0_0));
+             _data_mat[1] = ((walberla::float64)(elMat_0_1));
+             _data_mat[2] = ((walberla::float64)(elMat_0_2));
+             _data_mat[3] = ((walberla::float64)(elMat_0_3));
+             _data_mat[4] = ((walberla::float64)(elMat_1_0));
+             _data_mat[5] = ((walberla::float64)(elMat_1_1));
+             _data_mat[6] = ((walberla::float64)(elMat_1_2));
+             _data_mat[7] = ((walberla::float64)(elMat_1_3));
+             _data_mat[8] = ((walberla::float64)(elMat_2_0));
+             _data_mat[9] = ((walberla::float64)(elMat_2_1));
+             _data_mat[10] = ((walberla::float64)(elMat_2_2));
+             _data_mat[11] = ((walberla::float64)(elMat_2_3));
+             _data_mat[12] = ((walberla::float64)(elMat_3_0));
+             _data_mat[13] = ((walberla::float64)(elMat_3_1));
+             _data_mat[14] = ((walberla::float64)(elMat_3_2));
+             _data_mat[15] = ((walberla::float64)(elMat_3_3));
          
          
              mat->addValues( _data_rowIdx, _data_colIdx, _data_mat );