diff --git a/Addons/HMat/Src/Containers/FBlockPMapping.hpp b/Addons/HMat/Src/Containers/FBlockPMapping.hpp
index fb9e52e57de427999cd748f4d4d829ae00428a9b..cfdc94d3186d639ddae45ee6c7e2d8053d8c28f1 100644
--- a/Addons/HMat/Src/Containers/FBlockPMapping.hpp
+++ b/Addons/HMat/Src/Containers/FBlockPMapping.hpp
@@ -96,11 +96,11 @@ public:
 
         colBlocks = new ColNode[nbPartitions];
         for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
-            colBlocks[idxPartRow].infos.row = 0;
-            colBlocks[idxPartRow].infos.col = partitionsOffset[idxPartCol];
-            colBlocks[idxPartRow].infos.nbRows = dim;
-            colBlocks[idxPartRow].infos.nbCols = partitions[idxPartRow];
-            colBlocks[idxPartRow].infos.level = 0;
+            colBlocks[idxPartCol].infos.row = 0;
+            colBlocks[idxPartCol].infos.col = partitionsOffset[idxPartCol];
+            colBlocks[idxPartCol].infos.nbRows = dim;
+            colBlocks[idxPartCol].infos.nbCols = partitions[idxPartCol];
+            colBlocks[idxPartCol].infos.level = 0;
         }
     }
 
@@ -140,8 +140,8 @@ public:
             for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
                 callback(cells[idxPartCol*nbPartitions + idxPartRow].infos,
                      cells[idxPartCol*nbPartitions + idxPartRow].cell,
-                     rowBlocks[idxPartRow],
-                     colBlocks[idxPartCol]);
+                     rowBlocks[idxPartRow].cell,
+                     colBlocks[idxPartCol].cell);
             }
         }
     }
@@ -171,11 +171,35 @@ public:
         return colBlocks[idxColPart].cell;
     }
 
-    const ColBlockClass& getColCellInfo(const int idxColPart) const {
+    const FBlockDescriptor& getColCellInfo(const int idxColPart) const {
         return colBlocks[idxColPart].infos;
     }
 
     // Operations
+    void gemv(FReal res[], const FReal vec[]) const {
+        for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
+            for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
+//                &res[cells[idxPartCol*nbPartitions + idxPartRow].infos.row],
+//                &vec[cells[idxPartCol*nbPartitions + idxPartRow].infos.col])
+//                cells[idxPartCol*nbPartitions + idxPartRow].cell,
+//                rowBlocks[idxPartRow].cell,
+//                colBlocks[idxPartCol].cell;
+            }
+        }
+    }
+
+    void gemm(FReal res[], const FReal mat[], const int nbRhs) const {
+        for(int idxPartCol = 0 ; idxPartCol < nbPartitions ; ++idxPartCol){
+            for(int idxPartRow = 0 ; idxPartRow < nbPartitions ; ++idxPartRow){
+//                &res[cells[idxPartCol*nbPartitions + idxPartRow].infos.row],
+//                &vec[cells[idxPartCol*nbPartitions + idxPartRow].infos.col])
+//                cells[idxPartCol*nbPartitions + idxPartRow].cell,
+//                rowBlocks[idxPartRow].cell,
+//                colBlocks[idxPartCol].cell;
+//                nbRhs, dim
+            }
+        }
+    }
 };
 
 #endif // FBLOCKPMAPPING_HPP
diff --git a/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp b/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
index 0d8cd99ed6047acd8b6625d013c7537bef89ab80..2b43578eeaba05d5dd366a9869b57a54b193b89b 100644
--- a/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
+++ b/Addons/HMat/Tests/testPartitionsMappingGemvBlock.cpp
@@ -116,7 +116,7 @@ int main(int argc, char** argv){
         std::unique_ptr<FReal[]> resDense(new FReal[dim]);
         FSetToZeros(resDense.get(), dim);
 
-        grid.gemv(resDense.get(), vec.get());
+        //grid.gemv(resDense.get(), vec.get());
 
         FMath::FAccurater<FReal> testDense(resTest.get(), resDense.get(), dim);