diff --git a/src/implementation/mesh/tnlGrid1D_impl.h b/src/implementation/mesh/tnlGrid1D_impl.h
index 7d107dc152a3d0001961b255625d79026ece7593..0b4e3c4c45f2ffa04f188360abfd2b174a3221d0 100644
--- a/src/implementation/mesh/tnlGrid1D_impl.h
+++ b/src/implementation/mesh/tnlGrid1D_impl.h
@@ -66,7 +66,7 @@ void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const Index x
    this -> dimensions. x() = xSize;
    dofs = xSize;
 
-   tnlTuple< 1, Real > parametricStep;
+   VertexType parametricStep;
    parametricStep. x() = proportions. x() / xSize;
    geometry. setParametricStep( parametricStep );
 }
@@ -75,7 +75,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const tnlTuple< 1, Index >& dimensions )
+void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const CoordinatesType& dimensions )
 {
    this -> setDimensions( dimensions. x() );
 }
@@ -84,7 +84,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-const tnlTuple< 1, Index >& tnlGrid< 1, Real, Device, Index, Geometry > :: getDimensions() const
+const typename tnlGrid< 1, Real, Device, Index, Geometry > :: CoordinatesType& 
+   tnlGrid< 1, Real, Device, Index, Geometry > :: getDimensions() const
 {
    return this -> dimensions;
 }
@@ -93,7 +94,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-void tnlGrid< 1, Real, Device, Index, Geometry > :: setOrigin( const tnlTuple< 1, Real >& origin )
+void tnlGrid< 1, Real, Device, Index, Geometry > :: setOrigin( const VertexType& origin )
 {
    this -> origin = origin;
 }
@@ -102,7 +103,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getOrigin() const
+const typename tnlGrid< 1, Real, Device, Index, Geometry > :: VertexType& 
+  tnlGrid< 1, Real, Device, Index, Geometry > :: getOrigin() const
 {
    return this -> origin;
 }
@@ -111,7 +113,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-void tnlGrid< 1, Real, Device, Index, Geometry > :: setProportions( const tnlTuple< 1, Real >& proportions )
+void tnlGrid< 1, Real, Device, Index, Geometry > :: setProportions( const VertexType& proportions )
 {
    this -> proportions = proportions;
    this -> setDimensions( this -> dimensions );
@@ -121,7 +123,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getProportions() const
+const typename tnlGrid< 1, Real, Device, Index, Geometry > :: VertexType& 
+   tnlGrid< 1, Real, Device, Index, Geometry > :: getProportions() const
 {
    return this -> proportions;
 }
@@ -130,7 +133,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-void tnlGrid< 1, Real, Device, Index, Geometry > :: setParametricStep( const tnlTuple< 1, Real >& parametricStep )
+void tnlGrid< 1, Real, Device, Index, Geometry > :: setParametricStep( const VertexType& parametricStep )
 {
    this -> proportions. x() = this -> dimensions. x() * parametricStep. x();
    geometry. setParametricStep( parametricStep );
@@ -140,7 +143,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry  >
-const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getParametricStep() const
+const typename tnlGrid< 1, Real, Device, Index, Geometry > :: VertexType& 
+   tnlGrid< 1, Real, Device, Index, Geometry > :: getParametricStep() const
 {
    return geometry. getParametricStep();
 }
diff --git a/src/implementation/mesh/tnlGrid2D_impl.h b/src/implementation/mesh/tnlGrid2D_impl.h
index 828920379cc4511b5b35a64731ef11ffa47f882c..628e4328c8b0a46bb08f04743c637f456217f5d5 100644
--- a/src/implementation/mesh/tnlGrid2D_impl.h
+++ b/src/implementation/mesh/tnlGrid2D_impl.h
@@ -68,7 +68,7 @@ void tnlGrid< 2, Real, Device, Index, Geometry > :: setDimensions( const Index x
    this -> dimensions. x() = xSize;
    this -> dimensions. y() = ySize;
    dofs = ySize * xSize;
-   tnlTuple< 2, Real > parametricStep;
+   VertexType parametricStep;
    parametricStep. x() = proportions. x() / xSize;
    parametricStep. y() = proportions. y() / ySize;
    geometry. setParametricStep( parametricStep );
@@ -78,7 +78,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 2, Real, Device, Index, Geometry > :: setDimensions( const tnlTuple< 2, Index >& dimensions )
+void tnlGrid< 2, Real, Device, Index, Geometry > :: setDimensions( const CoordinatesType& dimensions )
 {
    this -> setDimensions( dimensions. x(), dimensions. y() );
 }
@@ -87,7 +87,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 2, Index >& tnlGrid< 2, Real, Device, Index, Geometry > :: getDimensions() const
+const typename tnlGrid< 2, Real, Device, Index, Geometry > :: CoordinatesType& 
+   tnlGrid< 2, Real, Device, Index, Geometry > :: getDimensions() const
 {
    return this -> dimensions;
 }
@@ -96,7 +97,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 2, Real, Device, Index, Geometry > :: setOrigin( const tnlTuple< 2, Real >& origin )
+void tnlGrid< 2, Real, Device, Index, Geometry > :: setOrigin( const VertexType& origin )
 {
    this -> origin = origin;
 }
@@ -105,7 +106,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 2, Real >& tnlGrid< 2, Real, Device, Index, Geometry > :: getOrigin() const
+const typename tnlGrid< 2, Real, Device, Index, Geometry > :: VertexType& 
+   tnlGrid< 2, Real, Device, Index, Geometry > :: getOrigin() const
 {
    return this -> origin;
 }
@@ -114,10 +116,10 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 2, Real, Device, Index, Geometry > :: setProportions( const tnlTuple< 2, Real >& proportions )
+void tnlGrid< 2, Real, Device, Index, Geometry > :: setProportions( const VertexType& proportions )
 {
    this -> proportions = proportions;
-   tnlTuple< 2, Real > parametricStep;
+   VertexType parametricStep;
    parametricStep. x() = proportions. x() / ( this -> dimensions. x() - 1 );
    parametricStep. y() = proportions. y() / ( this -> dimensions. y() - 1 );
    geometry. setParametricStep( parametricStep );
@@ -127,7 +129,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 2, Real >& tnlGrid< 2, Real, Device, Index, Geometry > :: getProportions() const
+const typename tnlGrid< 2, Real, Device, Index, Geometry > :: VertexType& 
+   tnlGrid< 2, Real, Device, Index, Geometry > :: getProportions() const
 {
    return this -> proportions;
 }
@@ -136,7 +139,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 2, Real, Device, Index, Geometry > :: setParametricStep( const tnlTuple< 2, Real >& spaceStep )
+void tnlGrid< 2, Real, Device, Index, Geometry > :: setParametricStep( const VertexType& spaceStep )
 {
    this -> proportions. x() = this -> dimensions. x() *
                               geometry. getParametricStep(). x();
@@ -148,7 +151,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 2, Real >& tnlGrid< 2, Real, Device, Index, Geometry > :: getParametricStep() const
+const typename tnlGrid< 2, Real, Device, Index, Geometry > :: VertexType& 
+   tnlGrid< 2, Real, Device, Index, Geometry > :: getParametricStep() const
 {
    /*tnlAssert( dimensions. x() > 0,
               cerr << "Cannot get the space step hx since number of Elements along the x axis is not known in tnlGrid "
@@ -188,7 +192,7 @@ template< typename Real,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
 void tnlGrid< 2, Real, Device, Index, Geometry > :: getElementCoordinates( const Index element,
-                                                                           tnlTuple< 2, Index >& coordinates ) const
+                                                                           CoordinatesType& coordinates ) const
 {
    tnlAssert( i >= 0 && i < dofs,
               cerr << " i = " << i << " dofs = " << dofs
@@ -203,8 +207,8 @@ template< typename Real,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
 Index tnlGrid< 2, Real, Device, Index, Geometry > :: getElementNeighbour( const Index Element,
-                                                            const Index dy,
-                                                            const Index dx ) const
+                                                                          const Index dx,
+                                                                          const Index dy ) const
 {
    tnlAssert( Element + dy * this -> dimensions. x() + dx < getDofs(),
               cerr << "Index of neighbour with dx = " << dx
@@ -228,8 +232,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 2, Real, Device, Index, Geometry > :: getElementCenter( const tnlTuple< 2, Index >& coordinates,
-                                                                      tnlTuple< 2, Real >& center ) const
+void tnlGrid< 2, Real, Device, Index, Geometry > :: getElementCenter( const CoordinatesType& coordinates,
+                                                                      VertexType& center ) const
 {
       geometry. getElementCenter( origin, coordinates, center );
 }
@@ -238,7 +242,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-Real tnlGrid< 2, Real, Device, Index, Geometry > :: getElementMeasure( const tnlTuple< 2, Index >& coordinates ) const
+Real tnlGrid< 2, Real, Device, Index, Geometry > :: getElementMeasure( const CoordinatesType& coordinates ) const
 {
    return geometry. getElementMeasure( coordinates );
 }
@@ -263,18 +267,29 @@ Real tnlGrid< 2, Real, Device, Index, Geometry > :: getEdgeLength( const Index j
                                                                    const Index i ) const
 {
    return geometry. getEdgeLength< dy, dx >( j, i );
+}*/
+
+template< typename Real,
+          typename Device,
+          typename Index,
+          template< int, typename, typename, typename > class Geometry >
+template< int dx, int dy >
+void tnlGrid< 2, Real, Device, Index, Geometry > :: getEdgeNormal( const CoordinatesType& coordinates,
+                                                                   VertexType& normal ) const
+{
+   return geometry. getEdgeNormal< dx, dy >( coordinates, normal );
 }
 
 template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-template< int dy, int dx >
-tnlTuple< 2, Real > tnlGrid< 2, Real, Device, Index, Geometry > :: getEdgeNormal( const Index j,
-                                                                                  const Index i ) const
+   template< int dx, int dy >
+void tnlGrid< 2, Real, Device, Index, Geometry > :: getVertex( const CoordinatesType& elementCoordinates,
+                                                               VertexType& vertex ) const
 {
-   return geometry. getEdgeNormal< dy, dx >( j, i );
-}*/
+   return geometry. getVertex< dx, dy >( elementCoordinates, vertex );
+}
 
 template< typename Real,
           typename Device,
@@ -317,7 +332,7 @@ bool tnlGrid< 2, Real, Device, Index, Geometry > :: load( tnlFile& file )
       return false;
    this -> dofs = this -> getDimensions(). x() *
                   this -> getDimensions(). y();
-   tnlTuple< 2, Real > parametricStep;
+   VertexType parametricStep;
    parametricStep. x() = proportions. x() / ( this -> dimensions. x() - 1 );
    parametricStep. y() = proportions. y() / ( this -> dimensions. y() - 1 );
    geometry. setParametricStep( parametricStep );
diff --git a/src/implementation/mesh/tnlGrid3D_impl.h b/src/implementation/mesh/tnlGrid3D_impl.h
index bfdac5f7a6df5311084bedc24688fb1ba874942d..dbcb00dccd85e54d197171917af0a7e9db079402 100644
--- a/src/implementation/mesh/tnlGrid3D_impl.h
+++ b/src/implementation/mesh/tnlGrid3D_impl.h
@@ -74,7 +74,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 3, Real, Device, Index, Geometry > :: setDimensions( const tnlTuple< 3, Index >& dimensions )
+void tnlGrid< 3, Real, Device, Index, Geometry > :: setDimensions( const CoordinatesType& dimensions )
 {
    this -> setDimensions( this -> dimensions. x(), this -> dimensions. y(), this -> dimensions. z() );
 }
@@ -83,7 +83,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 3, Index >& tnlGrid< 3, Real, Device, Index, Geometry > :: getDimensions() const
+const typename tnlGrid< 3, Real, Device, Index, Geometry > :: CoordinatesType& 
+   tnlGrid< 3, Real, Device, Index, Geometry > :: getDimensions() const
 {
    return this -> dimensions;
 }
@@ -92,7 +93,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 3, Real, Device, Index, Geometry > :: setOrigin( const tnlTuple< 3, Real >& origin )
+void tnlGrid< 3, Real, Device, Index, Geometry > :: setOrigin( const VertexType& origin )
 {
    this -> origin = origin;
 }
@@ -101,7 +102,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 3, Real >& tnlGrid< 3, Real, Device, Index, Geometry > :: getOrigin() const
+const typename tnlGrid< 3, Real, Device, Index, Geometry > :: VertexType&
+   tnlGrid< 3, Real, Device, Index, Geometry > :: getOrigin() const
 {
    return this -> origin;
 }
@@ -110,7 +112,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 3, Real, Device, Index, Geometry > :: setProportions( const tnlTuple< 3, Real >& proportions )
+void tnlGrid< 3, Real, Device, Index, Geometry > :: setProportions( const VertexType& proportions )
 {
    this -> proportions = proportions;
 }
@@ -119,7 +121,8 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-const tnlTuple< 3, Real >& tnlGrid< 3, Real, Device, Index, Geometry > :: getProportions() const
+const typename tnlGrid< 3, Real, Device, Index, Geometry > :: VertexType&
+   tnlGrid< 3, Real, Device, Index, Geometry > :: getProportions() const
 {
    return this -> proportions;
 }
@@ -128,7 +131,7 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-void tnlGrid< 3, Real, Device, Index, Geometry > :: setParametricStep( const tnlTuple< 3, Real >& spaceStep )
+void tnlGrid< 3, Real, Device, Index, Geometry > :: setParametricStep( const VertexType& spaceStep )
 {
    this -> proportions. x() = this -> dimensions. x() *
                               spaceStep. x();
@@ -142,27 +145,10 @@ template< typename Real,
           typename Device,
           typename Index,
           template< int, typename, typename, typename > class Geometry >
-tnlTuple< 3, Real > tnlGrid< 3, Real, Device, Index, Geometry > :: getParametricStep() const
+const typename tnlGrid< 3, Real, Device, Index, Geometry > :: VertexType&
+   tnlGrid< 3, Real, Device, Index, Geometry > :: getParametricStep() const
 {
-   tnlAssert( dimensions. x() > 0,
-              cerr << "Cannot get the space step hx since number of Elements along the x axis is not known in tnlGrid "
-                   << this -> getName() );
-   tnlAssert( dimensions. y() > 0,
-              cerr << "Cannot get the space step hy since number of Elements along the y axis is not known in tnlGrid "
-                   << this -> getName() );
-   tnlAssert( dimensions. z() > 0,
-              cerr << "Cannot get the space step hz since number of Elements along the z axis is not known in tnlGrid "
-                   << this -> getName() );
-
-   tnlTuple< 3, RealType > spaceStep;
-   spaceStep. x() =
-            this -> proportions. x() / ( Real ) ( this -> dimensions. x() - 1 );
-   spaceStep. y() =
-            this -> proportions. y() / ( Real ) ( this -> dimensions. y() - 1 );
-   spaceStep. z() =
-            this -> proportions. z() / ( Real ) ( this -> dimensions. z() - 1 );
-
-   return spaceStep;
+   //return geometry. getParametricStep();
 }
 
 template< typename Real,
diff --git a/src/implementation/mesh/tnlIdenticalGridGeometry_impl.h b/src/implementation/mesh/tnlIdenticalGridGeometry_impl.h
index b052df59565da180bd220dcdf936896725e088d2..6ff5a648378d6ab8db4f84b5983a55aff1b511dc 100644
--- a/src/implementation/mesh/tnlIdenticalGridGeometry_impl.h
+++ b/src/implementation/mesh/tnlIdenticalGridGeometry_impl.h
@@ -28,7 +28,7 @@
 template< typename Real,
           typename Device,
           typename Index >
-void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: setParametricStep( const tnlTuple< 1, Real >& parametricStep )
+void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: setParametricStep( const VertexType& parametricStep )
 {
    this -> parametricStep = parametricStep;
    this -> elementMeasure = this -> parametricStep. x();
@@ -37,7 +37,8 @@ void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: setParametricStep( co
 template< typename Real,
           typename Device,
           typename Index >
-const tnlTuple< 1, Real >& tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getParametricStep() const
+const typename tnlIdenticalGridGeometry< 1, Real, Device, Index > :: VertexType& 
+   tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getParametricStep() const
 {
    return this -> parametricStep;
 }
@@ -45,9 +46,9 @@ const tnlTuple< 1, Real >& tnlIdenticalGridGeometry< 1, Real, Device, Index > ::
 template< typename Real,
           typename Device,
           typename Index >
-void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getElementCenter( const tnlTuple< 1, Real >& origin,
-                                                                             const tnlTuple< 1, Index >& coordinates,
-                                                                             tnlTuple< 1, Real >& center ) const
+void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getElementCenter( const VertexType& origin,
+                                                                             const CoordinatesType& coordinates,
+                                                                             VertexType& center ) const
 {
    center. x() = ( coordinates. x() + 0.5 ) * parametricStep. x();
 }
@@ -55,7 +56,7 @@ void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getElementCenter( con
 template< typename Real,
           typename Device,
           typename Index >
-Real tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getElementMeasure( const Index i ) const
+Real tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getElementMeasure( const CoordinatesType& i ) const
 {
    return elementMeasure;
 }
@@ -74,8 +75,8 @@ template< typename Real,
           typename Index >
 template< Index dx >
 void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getEdgeCoordinates( const Index i,
-                                                                               const tnlTuple< 1, Real >& origin,
-                                                                               tnlTuple< 1, Real >& coordinates ) const
+                                                                               const VertexType& origin,
+                                                                               VertexType& coordinates ) const
 {
    coordinates. x() = origin. x() + ( i + 0.5 * ( 1.0 + dx ) ) * parametricStep. x();
 }
@@ -94,7 +95,7 @@ template< typename Real,
           typename Index >
 template< Index dx >
 void tnlIdenticalGridGeometry< 1, Real, Device, Index > :: getEdgeNormal( const Index i,
-                                                                          tnlTuple< 1, Real >& normal ) const
+                                                                          VertexType& normal ) const
 {
    tnlAssert( dx == 1 || dx == -1, cerr << " dx = " << dx << " dy = " << dy << endl );
    normal. x() = dx;
@@ -128,7 +129,7 @@ bool tnlIdenticalGridGeometry< 1, Real, Device, Index > :: load( tnlFile& file )
 template< typename Real,
           typename Device,
           typename Index >
-void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: setParametricStep( const tnlTuple< 2, Real >& parametricStep )
+void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: setParametricStep( const VertexType& parametricStep )
 {
    this -> parametricStep = parametricStep;
    this -> elementMeasure = this -> parametricStep. x() * this -> parametricStep. y();
@@ -137,7 +138,8 @@ void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: setParametricStep( co
 template< typename Real,
           typename Device,
           typename Index >
-const tnlTuple< 2, Real >& tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getParametricStep() const
+const typename tnlIdenticalGridGeometry< 2, Real, Device, Index > :: VertexType&
+   tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getParametricStep() const
 {
    return this -> parametricStep;
 }
@@ -145,9 +147,9 @@ const tnlTuple< 2, Real >& tnlIdenticalGridGeometry< 2, Real, Device, Index > ::
 template< typename Real,
           typename Device,
           typename Index >
-void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getElementCenter( const tnlTuple< 2, Real >& origin,
-                                                                             const tnlTuple< 2, Index >& coordinates,
-                                                                             tnlTuple< 2, Real >& center ) const
+void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getElementCenter( const VertexType& origin,
+                                                                             const CoordinatesType& coordinates,
+                                                                             VertexType& center ) const
 {
    center. x() = ( coordinates. x() + 0.5 ) * parametricStep. x();
    center. y() = ( coordinates. y() + 0.5 ) * parametricStep. y();
@@ -156,12 +158,12 @@ void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getElementCenter( con
 template< typename Real,
           typename Device,
           typename Index >
-Real tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getElementMeasure( const tnlTuple< 2, Index >& coordinates ) const
+Real tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getElementMeasure( const CoordinatesType& coordinates ) const
 {
    return elementMeasure;
 }
 
-template< typename Real,
+/*template< typename Real,
           typename Device,
           typename Index >
    template< Index dx, Index dy >
@@ -183,8 +185,8 @@ template< typename Real,
 template< Index dx, Index dy >
 void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getEdgeCoordinates( const Index i,
                                                                                const Index j,
-                                                                               const tnlTuple< 2, Real >& origin,
-                                                                               tnlTuple< 2, Real >& coordinates ) const
+                                                                               const VertexType& origin,
+                                                                               VertexType& coordinates ) const
 {
    coordinates. x() = origin. x() + ( i + 0.5 * ( 1.0 + dx ) ) * parametricStep. x();
    coordinates. y() = origin. y() + ( j + 0.5 * ( 1.0 + dy ) ) * parametricStep. y();
@@ -202,21 +204,20 @@ Real tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getEdgeLength( const
    if( dy == 1 && dx == 0 )
       return parametricStep. x();
    tnlAssert( false, cerr << "Bad values of dx and dy - dx = " << dx << " dy = " << dy );
-}
+}*/
 
 template< typename Real,
           typename Device,
           typename Index >
 template< Index dx, Index dy >
-void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getEdgeNormal( const Index i,
-                                                                          const Index j,
-                                                                          tnlTuple< 2, Real >& normal ) const
+void tnlIdenticalGridGeometry< 2, Real, Device, Index > :: getEdgeNormal( const CoordinatesType& coordinates,                                                                     
+                                                                          VertexType& normal ) const
 {
    tnlAssert( ( dx == 0 || dx == 1 || dx == -1 ||
                 dy == 0 || dy == 1 || dy == -1 ) &&
                dx * dy == 0, cerr << " dx = " << dx << " dy = " << dy << endl );
-   normal. x() = dx;
-   normal. y() = dy;
+   normal. x() = dx * parametricStep. y();
+   normal. y() = dy * parametricStep. x();;
 }
 
 template< typename Real,
diff --git a/src/implementation/schemes/diffusion/tnlLinearDiffusion_impl.h b/src/implementation/schemes/diffusion/tnlLinearDiffusion_impl.h
index 7c765c5d1e2fc88ad4af833308fe2f2d043eb77e..959045105e9284428f4ed19a8885234421c4130f 100644
--- a/src/implementation/schemes/diffusion/tnlLinearDiffusion_impl.h
+++ b/src/implementation/schemes/diffusion/tnlLinearDiffusion_impl.h
@@ -46,10 +46,10 @@ Real tnlLinearDiffusion< tnlGrid< 2, Real, Device, Index > > :: getDiffusion( co
    const Real hx = mesh -> getParametricStep(). x();
    const Real hy = mesh -> getParametricStep(). y();
 
-   const Index e = mesh -> getElementNeighbour( c,  0,  1 );
-   const Index w = mesh -> getElementNeighbour( c,  0, -1 );
-   const Index n = mesh -> getElementNeighbour( c,  1,  0 );
-   const Index s = mesh -> getElementNeighbour( c, -1,  0 );
+   const Index e = mesh -> getElementNeighbour( c,  1,  0 );
+   const Index w = mesh -> getElementNeighbour( c, -1,  0 );
+   const Index n = mesh -> getElementNeighbour( c,  0,  1 );
+   const Index s = mesh -> getElementNeighbour( c,  0, -1 );
 
    return ( f[ e ] - 2.0 * f[ c ] + f[ w ] ) / ( hx * hx ) +
           ( f[ n ] - 2.0 * f[ c ] + f[ s ] ) / ( hy * hy );
diff --git a/src/implementation/schemes/euler/fvm/tnlLaxFridrichs_impl.h b/src/implementation/schemes/euler/fvm/tnlLaxFridrichs_impl.h
index 573aa1a0989230044db466502fd31d075165cfd7..0dd7366df4ec7462d9be3a39cc7dcd46d9712045 100644
--- a/src/implementation/schemes/euler/fvm/tnlLaxFridrichs_impl.h
+++ b/src/implementation/schemes/euler/fvm/tnlLaxFridrichs_impl.h
@@ -120,10 +120,10 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
    const RealType hy = this -> mesh -> getParametricStep(). y();
 
    const IndexType& c = centralVolume;
-   const IndexType e = this -> mesh -> getElementNeighbour( centralVolume,  0,  1 );
-   const IndexType w = this -> mesh -> getElementNeighbour( centralVolume,  0, -1 );
-   const IndexType n = this -> mesh -> getElementNeighbour( centralVolume,  1,  0 );
-   const IndexType s = this -> mesh -> getElementNeighbour( centralVolume, -1,  0 );
+   const IndexType e = this -> mesh -> getElementNeighbour( centralVolume,  1,  0 );
+   const IndexType w = this -> mesh -> getElementNeighbour( centralVolume, -1,  0 );
+   const IndexType n = this -> mesh -> getElementNeighbour( centralVolume,  0,  1 );
+   const IndexType s = this -> mesh -> getElementNeighbour( centralVolume,  0, -1 );
 
    /****
     * rho_t + ( rho u_1 )_x + ( rho u_2 )_y =  0
@@ -132,7 +132,7 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
    const RealType u1_w = rho_u1[ w ] / regularize( rho[ w ] );
    const RealType u2_n = rho_u2[ n ] / regularize( rho[ n ] );
    const RealType u2_s = rho_u2[ s ] / regularize( rho[ s ] );
-   rho_t= this -> viscosityCoefficient * 0.25 * ( rho[ e ] + rho[ w ] + rho[ s ] + rho[ n ] - 4.0 * rho[ c ] )
+   rho_t = this -> viscosityCoefficient * 0.25 * ( rho[ e ] + rho[ w ] + rho[ s ] + rho[ n ] - 4.0 * rho[ c ] )
                - ( rho[ e ] * u1_e - rho[ w ] * u1_w ) / ( 2.0 * hx )
                - ( rho[ n ] * u2_n - rho[ s ] * u2_s ) / ( 2.0 * hy );
 
@@ -157,6 +157,7 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
                    - ( rho_u2[ n ] * u2_n - rho_u2[ s ] * u2_s ) / ( 2.0 * hy )
                    - p_y;
 
+
    /****
     * Scheme for deformed grids
     */
@@ -171,7 +172,7 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
    /****
     * Get the central volume and its neighbours (east, north, west, south) coordinates
     */
-   tnlTuple< 2, IndexType > c_coordinates, e_coordinates, n_coordinates, w_coordinates, s_coordinates;
+   CoordinatesType c_coordinates, e_coordinates, n_coordinates, w_coordinates, s_coordinates;
    this -> mesh -> getElementCoordinates( c, c_coordinates );
    e_coordinates = n_coordinates = w_coordinates = s_coordinates = c_coordinates;
    e_coordinates. x() ++;
@@ -189,26 +190,13 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
    const RealType mu_D_s = this -> mesh -> getElementMeasure( s_coordinates );
 
    /****
-    * Get the volumes centers of gravity
+    * Get the edge normals
     */
-   tnlTuple< 2, RealType > c_center, e_center, w_center, n_center, s_center;
-   this -> mesh -> getElementCenter( c_coordinates, c_center );
-   this -> mesh -> getElementCenter( c_coordinates, e_center );
-   this -> mesh -> getElementCenter( c_coordinates, w_center );
-   this -> mesh -> getElementCenter( c_coordinates, n_center );
-   this -> mesh -> getElementCenter( c_coordinates, s_center );
-
-   /****
-    * Get delta x and delta y between the volumes
-    */
-   const RealType dx_e = e_center. x() - c_center. x();
-   const RealType dx_w = w_center. x() - w_center. x();
-   const RealType dx_n = n_center. x() - n_center. x();
-   const RealType dx_s = s_center. x() - s_center. x();
-   const RealType dy_e = e_center. y() - c_center. y();
-   const RealType dy_w = w_center. y() - w_center. y();
-   const RealType dy_n = n_center. y() - n_center. y();
-   const RealType dy_s = s_center. y() - s_center. y();
+   VertexType e_normal, w_normal, n_normal, s_normal;
+   this -> mesh -> template getEdgeNormal<  1,  0 >( c_coordinates, e_normal );
+   this -> mesh -> template getEdgeNormal< -1,  0 >( c_coordinates, w_normal );
+   this -> mesh -> template getEdgeNormal<  0,  1 >( c_coordinates, n_normal );
+   this -> mesh -> template getEdgeNormal<  0, -1 >( c_coordinates, s_normal );
 
    /****
     * Compute the fluxes
@@ -222,15 +210,16 @@ void tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient  > ::
    const RealType rho_g_n = 0.5 * ( rho[ c ] * u2_c + rho[ n ] * u2_n );
    const RealType rho_g_s = 0.5 * ( rho[ c ] * u2_c + rho[ s ] * u2_s );
 
-   rho_t = - 1.0 / mu_D_c * ( rho_f_e * dy_e - rho_g_e * dx_e +
-                              rho_f_n * dy_n - rho_g_n * dx_n +
-                              rho_f_w * dy_w - rho_g_w * dx_w +
-                              rho_f_s * dy_s - rho_g_s * dx_s )
+   rho_t = - 1.0 / mu_D_c * ( rho_f_e * e_normal. x() + rho_g_e * e_normal. y() +
+                              rho_f_n * n_normal. x() + rho_g_n * n_normal. y() +
+                              rho_f_w * w_normal. x() + rho_g_w * w_normal. y() +
+                              rho_f_s * s_normal. x() + rho_g_s * s_normal. y() )
            + 1.0 / ( 8.0 * mu_D_c ) *
                             ( ( mu_D_c + mu_D_e ) * ( rho[ e ] - rho[ c ] ) +
                               ( mu_D_c + mu_D_n ) * ( rho[ n ] - rho[ c ] ) +
                               ( mu_D_c + mu_D_w ) * ( rho[ w ] - rho[ c ] ) +
                               ( mu_D_c + mu_D_s ) * ( rho[ s ] - rho[ c ] ) );
+
 }
 
 template< typename Real,
diff --git a/src/implementation/schemes/gradient/tnlCentralFDMGradient_impl.h b/src/implementation/schemes/gradient/tnlCentralFDMGradient_impl.h
index 461d6e2c3d5433195528fe7854ed17cdd246f0cb..a9e5776dd05301c0a200dcffe2e35195a810e37b 100644
--- a/src/implementation/schemes/gradient/tnlCentralFDMGradient_impl.h
+++ b/src/implementation/schemes/gradient/tnlCentralFDMGradient_impl.h
@@ -45,10 +45,10 @@ void tnlCentralFDMGradient< tnlGrid< 2, Real, Device, Index > > :: getGradient(
 {
    tnlAssert( this -> mesh, cerr << "No mesh was set in tnlCentralFDMGradient. Use the bindMesh method." );
 
-   const Index e = mesh -> getElementNeighbour( i,  0,  1 );
-   const Index w = mesh -> getElementNeighbour( i,  0, -1 );
-   const Index n = mesh -> getElementNeighbour( i,  1,  0 );
-   const Index s = mesh -> getElementNeighbour( i, -1,  0 );
+   const Index e = mesh -> getElementNeighbour( i,  1,  0 );
+   const Index w = mesh -> getElementNeighbour( i, -1,  0 );
+   const Index n = mesh -> getElementNeighbour( i,  0,  1 );
+   const Index s = mesh -> getElementNeighbour( i,  0, -1 );
 
    f_x = ( f[ e ] - f[ w ] ) / ( 2.0 * mesh -> getParametricStep(). x() );
    f_y = ( f[ n ] - f[ s ] ) / ( 2.0 * mesh -> getParametricStep(). y() );
diff --git a/src/mesh/tnlGrid.h b/src/mesh/tnlGrid.h
index c0bd40569edaa3420bca1ba5703757c436b3baed..7cf6e76863b5afdc01eb00accf922163dbbf07d1 100644
--- a/src/mesh/tnlGrid.h
+++ b/src/mesh/tnlGrid.h
@@ -44,6 +44,9 @@ class tnlGrid< 1, Real, Device, Index, Geometry > : public tnlObject
    typedef Device DeviceType;
    typedef Index IndexType;
    typedef Geometry< 1, Real, Device, Index > GeometryType;
+   typedef tnlTuple< 1, Real > VertexType;
+   typedef tnlTuple< 1, Index > CoordinatesType;
+
    enum { Dimensions = 1};
 
    tnlGrid();
@@ -54,21 +57,21 @@ class tnlGrid< 1, Real, Device, Index, Geometry > : public tnlObject
 
    void setDimensions( const Index xSize );
 
-   void setDimensions( const tnlTuple< 1, Index >& );
+   void setDimensions( const CoordinatesType& );
 
-   const tnlTuple< 1, Index >& getDimensions() const;
+   const CoordinatesType& getDimensions() const;
 
-   void setOrigin( const tnlTuple< 1, Real >& origin );
+   void setOrigin( const VertexType& origin );
 
-   const tnlTuple< 1, Real >& getOrigin() const;
+   const VertexType& getOrigin() const;
 
-   void setProportions( const tnlTuple< 1, Real >& proportions );
+   void setProportions( const VertexType& proportions );
 
-   const tnlTuple< 1, Real >& getProportions() const;
+   const VertexType& getProportions() const;
 
-   void setParametricStep( const tnlTuple< 1, Real >& spaceStep );
+   void setParametricStep( const VertexType& spaceStep );
 
-   const tnlTuple< 1, Real >& getParametricStep() const;
+   const VertexType& getParametricStep() const;
 
    Index getElementIndex( const Index i ) const;
 
@@ -113,6 +116,8 @@ class tnlGrid< 2, Real, Device, Index, Geometry > : public tnlObject
    typedef Device DeviceType;
    typedef Index IndexType;
    typedef Geometry< 2, Real, Device, Index > GeometryType;
+   typedef tnlTuple< 2, Real > VertexType;
+   typedef tnlTuple< 2, Index > CoordinatesType;
    enum { Dimensions = 2};
 
    tnlGrid();
@@ -123,38 +128,46 @@ class tnlGrid< 2, Real, Device, Index, Geometry > : public tnlObject
 
    void setDimensions( const Index xSize, const Index ySize );
 
-   void setDimensions( const tnlTuple< 2, Index >& );
+   void setDimensions( const CoordinatesType& );
 
-   const tnlTuple< 2, Index >& getDimensions() const;
+   const CoordinatesType& getDimensions() const;
 
-   void setOrigin( const tnlTuple< 2, Real >& origin );
+   void setOrigin( const VertexType& origin );
 
-   const tnlTuple< 2, Real >& getOrigin() const;
+   const VertexType& getOrigin() const;
 
-   void setProportions( const tnlTuple< 2, Real >& proportions );
+   void setProportions( const VertexType& proportions );
 
-   const tnlTuple< 2, Real >& getProportions() const;
+   const VertexType& getProportions() const;
 
-   void setParametricStep( const tnlTuple< 2, Real >& spaceStep );
+   void setParametricStep( const VertexType& spaceStep );
 
-   const tnlTuple< 2, Real >& getParametricStep() const;
+   const VertexType& getParametricStep() const;
 
    Index getElementIndex( const Index i,
                           const Index j ) const;
 
    void getElementCoordinates( const Index i,
-                               tnlTuple< 2, Index >& coordinates ) const;
+                                   CoordinatesType& coordinates ) const;
 
    Index getElementNeighbour( const Index Element,
-                              const Index dy,
-                              const Index dx ) const;
+                              const Index dx,
+                              const Index dy ) const;
 
    Index getDofs() const;
 
-   void getElementCenter( const tnlTuple< 2, Index >& coordinates,
-                          tnlTuple< 2, Real >& center ) const;
+   void getElementCenter( const CoordinatesType& coordinates,
+                          VertexType& center ) const;
+
+   Real getElementMeasure( const CoordinatesType& coordinates ) const;
 
-   Real getElementMeasure( const tnlTuple< 2, Index >& coordinates ) const;
+   template< int dx, int dy >
+   void getEdgeNormal( const CoordinatesType& elementCoordinates,
+                       VertexType& normal ) const;
+
+   template< int dx, int dy >
+   void getVertex( const CoordinatesType& elementCoordinates,
+                   VertexType& vertex ) const;
 
    /*template< Index dy, Index dx >
    Real getElementsDistance( const Index j,
@@ -162,12 +175,7 @@ class tnlGrid< 2, Real, Device, Index, Geometry > : public tnlObject
 
    template< int dy, int dx >
    Real getEdgeLength( const Index j,
-                       const Index i ) const;
-
-   template< int dy, int dx >
-   tnlTuple< 2, Real > getEdgeNormal( const Index j,
-                                      const Index i ) const;*/
-
+                       const Index i ) const;*/
 
    //! Method for saving the object to a file as a binary data
    bool save( tnlFile& file ) const;
@@ -207,6 +215,9 @@ class tnlGrid< 3, Real, Device, Index, Geometry > : public tnlObject
    typedef Real RealType;
    typedef Device DeviceType;
    typedef Index IndexType;
+   typedef Geometry< 2, Real, Device, Index > GeometryType;
+   typedef tnlTuple< 3, Real > VertexType;
+   typedef tnlTuple< 3, Index > CoordinatesType;
    enum { Dimensions = 3};
 
    tnlGrid();
@@ -217,21 +228,21 @@ class tnlGrid< 3, Real, Device, Index, Geometry > : public tnlObject
 
    void setDimensions( const Index xSize, const Index ySize, const Index zSize );
 
-   void setDimensions( const tnlTuple< 3, Index >& );
+   void setDimensions( const CoordinatesType& );
 
-   const tnlTuple< 3, Index >& getDimensions() const;
+   const CoordinatesType& getDimensions() const;
 
-   void setOrigin( const tnlTuple< 3, Real >& origin );
+   void setOrigin( const VertexType& origin );
 
-   const tnlTuple< 3, Real >& getOrigin() const;
+   const VertexType& getOrigin() const;
 
-   void setProportions( const tnlTuple< 3, Real >& proportions );
+   void setProportions( const VertexType& proportions );
 
-   const tnlTuple< 3, Real >& getProportions() const;
+   const VertexType& getProportions() const;
 
-   void setParametricStep( const tnlTuple< 3, Real >& spaceStep );
+   void setParametricStep( const VertexType& spaceStep );
 
-   tnlTuple< 3, Real > getParametricStep() const;
+   const VertexType& getParametricStep() const;
 
    Index getElementIndex( const Index i, const Index j, const Index k ) const;
 
diff --git a/src/mesh/tnlIdenticalGridGeometry.h b/src/mesh/tnlIdenticalGridGeometry.h
index 0fabcbf5ea8e8c99f3645fd6716e40f1c1250151..e0bb0312f331d3bc61d79847885cdbda9b6c01a2 100644
--- a/src/mesh/tnlIdenticalGridGeometry.h
+++ b/src/mesh/tnlIdenticalGridGeometry.h
@@ -38,36 +38,38 @@ class tnlIdenticalGridGeometry< 1, Real, Device, Index >
    typedef Real RealType;
    typedef Device DeviceType;
    typedef Index IndexType;
+   typedef tnlTuple< 1, Index > CoordinatesType;
+   typedef tnlTuple< 1, Real > VertexType;
 
-   void setParametricStep( const tnlTuple< 1, Real >& parametricStep );
+   void setParametricStep( const VertexType& parametricStep );
 
-   const tnlTuple< 1, Real >& getParametricStep() const;
+   const VertexType& getParametricStep() const;
 
-   void getElementCenter( const tnlTuple< 1, Real >& origin,
-                          const tnlTuple< 1, Index >& coordinates,
-                          tnlTuple< 1, Real >& center ) const;
+   void getElementCenter( const VertexType& origin,
+                          const CoordinatesType& coordinates,
+                          VertexType& center ) const;
 
 
-   Real getElementMeasure( const Index i ) const;
+   Real getElementMeasure( const CoordinatesType& i ) const;
 
    template< Index dx >
    Real getElementsDistance( const Index i ) const;
 
    template< Index dx >
    void getEdgeCoordinates( const Index i,
-                            const tnlTuple< 1, Real >& origin,
-                            tnlTuple< 1, Real >& coordinates ) const;
+                            const VertexType& origin,
+                            VertexType& coordinates ) const;
 
    template< Index dx >
    Real getEdgeLength( const Index i ) const;
 
    template< Index dx >
    void getEdgeNormal( const Index i,
-                       tnlTuple< 1, Real >& normal ) const;
+                       VertexType& normal ) const;
 
    void getVertexCoordinates( const Index i,
-                              const tnlTuple< 1, Real >& origin,
-                              tnlTuple< 1, Real >& coordinates ) const;
+                              const VertexType& origin,
+                              VertexType& coordinates ) const;
 
    bool save( tnlFile& file ) const;
 
@@ -75,7 +77,7 @@ class tnlIdenticalGridGeometry< 1, Real, Device, Index >
 
    protected:
 
-   tnlTuple< 1, Real > parametricStep;
+   VertexType parametricStep;
 
    Real elementMeasure;
 };
@@ -90,40 +92,41 @@ class tnlIdenticalGridGeometry< 2, Real, Device, Index >
    typedef Real RealType;
    typedef Device DeviceType;
    typedef Index IndexType;
+   typedef tnlTuple< 2, Index > CoordinatesType;
+   typedef tnlTuple< 2, Real > VertexType;
 
-   void setParametricStep( const tnlTuple< 2, Real >& parametricStep );
+   void setParametricStep( const VertexType& parametricStep );
 
-   const tnlTuple< 2, Real >& getParametricStep() const;
+   const VertexType& getParametricStep() const;
 
-   void getElementCenter( const tnlTuple< 2, Real >& origin,
+   void getElementCenter( const VertexType& origin,
                           const tnlTuple< 2, Index >& coordinates,
-                          tnlTuple< 2, Real >& center ) const;
+                          VertexType& center ) const;
 
    Real getElementMeasure( const tnlTuple< 2, Index >& coordinates ) const;
 
-   template< Index dx, Index dy >
+   /*template< Index dx, Index dy >
    Real getElementsDistance( const Index i,
-                             const Index j ) const;
+                             const Index j ) const;*/
 
-   template< Index dx, Index dy >
+   /*template< Index dx, Index dy >
    void getEdgeCoordinates( const Index i,
                             const Index j,
-                            const tnlTuple< 2, Real >& origin,
-                            tnlTuple< 2, Real >& coordinates ) const;
+                            const VertexType& origin,
+                            VertexType& coordinates ) const;
 
    template< Index dx, Index dy >
    Real getEdgeLength( const Index i,
-                       const Index j ) const;
+                       const Index j ) const;*/
 
    template< Index dx, Index dy >
-   void getEdgeNormal( const Index i,
-                       const Index j,
-                       tnlTuple< 2, Real >& normal ) const;
+   void getEdgeNormal( const CoordinatesType& coordinates,
+                       VertexType& normal ) const;
 
-   void getVertexCoordinates( const Index i,
-                              const Index j,
-                              const tnlTuple< 2, Real >& origin,
-                              tnlTuple< 2, Real >& coordinates ) const;
+   template< Index dx, Index dy >
+   void getVertex( const CoordinatesType& coordinates,
+                   const VertexType& origin,
+                   VertexType& vertex ) const;
 
    bool save( tnlFile& file ) const;
 
@@ -131,7 +134,7 @@ class tnlIdenticalGridGeometry< 2, Real, Device, Index >
 
    protected:
 
-   tnlTuple< 2, Real > parametricStep;
+   VertexType parametricStep;
 
    Real elementMeasure;
 };
diff --git a/src/schemes/euler/fvm/tnlLaxFridrichs.h b/src/schemes/euler/fvm/tnlLaxFridrichs.h
index 0a881c1e92e2952e677c857e7c0c62e3b39ea113..76a496c3688dd93912d0f99c81cf7adb55c93b8c 100644
--- a/src/schemes/euler/fvm/tnlLaxFridrichs.h
+++ b/src/schemes/euler/fvm/tnlLaxFridrichs.h
@@ -40,6 +40,8 @@ class tnlLaxFridrichs< tnlGrid< 2, Real, Device, Index >, PressureGradient >
    typedef Real RealType;
    typedef Device DeviceType;
    typedef Index IndexType;
+   typedef typename MeshType :: VertexType VertexType;
+   typedef typename MeshType :: CoordinatesType CoordinatesType;
 
    tnlLaxFridrichs();