diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.cpp b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
index 61940c0d7a4bfaaf62ac51556ead5ca1573383fe..52be2335602dbe73cf096293fed4ea49afaa5cc6 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.cpp
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
@@ -1047,88 +1047,79 @@ void GbTriFaceMesh3D::readMeshFromSTLFile(string filename, bool removeRedundantN
         dummy = in.readString();
         nr += 3;
     }
-    if (removeRedundantNodes) {
+    if (removeRedundantNodes) 
+    {
         this->deleteRedundantNodes(); // dort wird autoamtisch calculateValues() aufgerufen
     } else {
         this->calculateValues();
     }
 }
-//////////////////////////////////////////////////////////////////////////
-// void GbTriFaceMesh3D::writeMeshToSTLFile(string filename, bool isBinaryFormat)
-//{
-//   vector<GbTriFaceMesh3D::Vertex>    *nodes     = new vector<GbTriFaceMesh3D::Vertex>;
-//   vector<GbTriFaceMesh3D::TriFace>   *triangles = new vector<GbTriFaceMesh3D::TriFace>;
-//   int nr=0;
-//
-//   if (!isBinaryFormat) {
-//      ofstream out(filename.c_str());
-//      if (!out.good())
-//      {
-//         delete nodes;
-//         delete triangles;
-//         UB_THROW(UbException(UB_EXARGS, "Can not open STL file: "+filename));
-//      }
-//      char title[80] = "ASCII";
-//      std::string s0, s1;
-//      float n0, n1, n2, f0, f1, f2, f3, f4, f5, f6, f7, f8;
-//      out.write(title, 80);
-//      size_t size = nodes->size();
-//      for (size_t i = 0; i < size)
-//      {
-//         out << nodes[i++]
-//         in >> s0;                                // facet || endsolid
-//         if (s0=="facet") {
-//            in >> s1 >> n0 >> n1 >> n2;            // normal x y z
-//            in >> s0 >> s1;                        // outer loop
-//            in >> s0 >> f0 >> f1 >> f2;         // vertex x y z
-//            in >> s0 >> f3 >> f4 >> f5;         // vertex x y z
-//            in >> s0 >> f6 >> f7 >> f8;         // vertex x y z
-//            in >> s0;                            // endloop
-//            in >> s0;                            // endfacet
-//            // Generate a new Triangle without Normal as 3 Vertices
-//            nodes->push_back(GbTriFaceMesh3D::Vertex(f0, f1, f2));
-//            nodes->push_back(GbTriFaceMesh3D::Vertex(f3, f4, f5));
-//            nodes->push_back(GbTriFaceMesh3D::Vertex(f6, f7, f8));
-//            triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr+1, nr+2));
-//            nr+=3;
-//         }
-//         else if (s0=="endsolid") {
-//            break;
-//         }
-//      }
-//      in.close();
-//   }
-//   else {
-//      FILE *f = fopen(filename.c_str(), "rb");
-//      if (!f)
-//      {
-//         delete nodes;
-//         delete triangles;
-//         UB_THROW(UbException(UB_EXARGS, "Can not open STL file: "+filename));
-//      }
-//      char title[80];
-//      int nFaces;
-//      fread(title, 80, 1, f);
-//      fread((void*)&nFaces, 4, 1, f);
-//      float v[12]; // normal=3, vertices=3*3 = 12
-//      unsigned short uint16;
-//      // Every Face is 50 Bytes: Normal(3*float), Vertices(9*float), 2 Bytes Spacer
-//      for (size_t i=0; i<nFaces; ++i) {
-//         for (size_t j=0; j<12; ++j) {
-//            fread((void*)&v[j], sizeof(float), 1, f);
-//         }
-//         fread((void*)&uint16, sizeof(unsigned short), 1, f); // spacer between successive faces
-//         nodes->push_back(GbTriFaceMesh3D::Vertex(v[3], v[4], v[5]));
-//         nodes->push_back(GbTriFaceMesh3D::Vertex(v[6], v[7], v[8]));
-//         nodes->push_back(GbTriFaceMesh3D::Vertex(v[9], v[10], v[11]));
-//         triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr+1, nr+2));
-//         nr+=3;
-//      }
-//      fclose(f);
-//   }
-//
-//   GbTriFaceMesh3D* mesh = new GbTriFaceMesh3D(meshName, nodes, triangles, splitAlg, removeRedundantNodes);
-//
-//   return mesh;
-//}
-//////////////////////////////////////////////////////////////////////////
+/*======================================================================*/
+void GbTriFaceMesh3D::readMeshFromSTLFileBinary(string filename, bool removeRedundantNodes)
+{
+    //vector<GbTriFaceMesh3D::Vertex> *nodes      = new vector<GbTriFaceMesh3D::Vertex>;
+    //vector<GbTriFaceMesh3D::TriFace> *triangles = new vector<GbTriFaceMesh3D::TriFace>;
+    int nr                                      = 0;
+
+    if (!true) {
+        ifstream in(filename.c_str());
+        if (!in.good()) {
+            delete nodes;
+            delete triangles;
+            UB_THROW(UbException(UB_EXARGS, "Can not open STL file: " + filename));
+        }
+        char title[80];
+        std::string s0, s1;
+        float n0, n1, n2, f0, f1, f2, f3, f4, f5, f6, f7, f8;
+        in.read(title, 80);
+        while (!in.eof()) {
+            in >> s0; // facet || endsolid
+            if (s0 == "facet") {
+                in >> s1 >> n0 >> n1 >> n2; // normal x y z
+                in >> s0 >> s1;             // outer loop
+                in >> s0 >> f0 >> f1 >> f2; // vertex x y z
+                in >> s0 >> f3 >> f4 >> f5; // vertex x y z
+                in >> s0 >> f6 >> f7 >> f8; // vertex x y z
+                in >> s0;                   // endloop
+                in >> s0;                   // endfacet
+                // Generate a new Triangle without Normal as 3 Vertices
+                nodes->push_back(GbTriFaceMesh3D::Vertex(f0, f1, f2));
+                nodes->push_back(GbTriFaceMesh3D::Vertex(f3, f4, f5));
+                nodes->push_back(GbTriFaceMesh3D::Vertex(f6, f7, f8));
+                triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr + 1, nr + 2));
+                nr += 3;
+            } else if (s0 == "endsolid") {
+                break;
+            }
+        }
+        in.close();
+    } else {
+        FILE *f = fopen(filename.c_str(), "rb");
+        if (!f) {
+            delete nodes;
+            delete triangles;
+            UB_THROW(UbException(UB_EXARGS, "Can not open STL file: " + filename));
+        }
+        char title[80];
+        int nFaces;
+        fread(title, 80, 1, f);
+        fread((void *)&nFaces, 4, 1, f);
+        float v[12]; // normal=3, vertices=3*3 = 12
+        unsigned short uint16;
+        // Every Face is 50 Bytes: Normal(3*float), Vertices(9*float), 2 Bytes Spacer
+        for (size_t i = 0; i < nFaces; ++i) {
+            for (size_t j = 0; j < 12; ++j) {
+                fread((void *)&v[j], sizeof(float), 1, f);
+            }
+            fread((void *)&uint16, sizeof(unsigned short), 1, f); // spacer between successive faces
+            nodes->push_back(GbTriFaceMesh3D::Vertex(v[3], v[4], v[5]));
+            nodes->push_back(GbTriFaceMesh3D::Vertex(v[6], v[7], v[8]));
+            nodes->push_back(GbTriFaceMesh3D::Vertex(v[9], v[10], v[11]));
+            triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr + 1, nr + 2));
+            nr += 3;
+        }
+        fclose(f);
+    }
+    this->calculateValues();
+}
+
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h
index 5fd77cecac566c143cdc4e692389596c5a86dcac..7f574bdf0ca8ef4f5e1027e8021d6b3ad939c3f8 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.h
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.h
@@ -270,6 +270,7 @@ public:
         this->transX3             = transX3;
     }
     void readMeshFromSTLFile(std::string filename, bool removeRedundantNodes);
+    void readMeshFromSTLFileBinary(std::string filename, bool removeRedundantNodes);
 
     double getX1Minimum() override
     {
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
index c34dccf9feefee287106e04f7bbeee4b3a6b13b7..198a7c3a1b77b55cb9ffc62b6559e8532a6a8b08 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMacroscopicQuantitiesCoProcessor.cpp
@@ -248,15 +248,31 @@ void WriteMacroscopicQuantitiesCoProcessor::addDataMQ(SPtr<Block3D> block)
     maxX1 -= 1;
     maxX2 -= 1;
     maxX3 -= 1;
+    int  SWBi, SEBi, NEBi, NWBi, SWTi, SETi, NETi, NWTi;
     // cell vector erstellen
     for (int ix3 = minX3; ix3 <= maxX3; ix3++) {
         for (int ix2 = minX2; ix2 <= maxX2; ix2++) {
             for (int ix1 = minX1; ix1 <= maxX1; ix1++) {
-                if ((SWB = nodeNumbers(ix1, ix2, ix3)) >= 0 && (SEB = nodeNumbers(ix1 + 1, ix2, ix3)) >= 0 &&
-                    (NEB = nodeNumbers(ix1 + 1, ix2 + 1, ix3)) >= 0 && (NWB = nodeNumbers(ix1, ix2 + 1, ix3)) >= 0 &&
-                    (SWT = nodeNumbers(ix1, ix2, ix3 + 1)) >= 0 && (SET = nodeNumbers(ix1 + 1, ix2, ix3 + 1)) >= 0 &&
-                    (NET = nodeNumbers(ix1 + 1, ix2 + 1, ix3 + 1)) >= 0 &&
-                    (NWT = nodeNumbers(ix1, ix2 + 1, ix3 + 1)) >= 0) {
+                if (
+                    (   SWBi = nodeNumbers(ix1, ix2, ix3)) >= 0 
+                    && (SEBi = nodeNumbers(ix1 + 1, ix2, ix3)) >= 0 
+                    && (NEBi = nodeNumbers(ix1 + 1, ix2 + 1, ix3)) >= 0 
+                    && (NWBi = nodeNumbers(ix1, ix2 + 1, ix3)) >= 0 
+                    && (SWTi = nodeNumbers(ix1, ix2, ix3 + 1)) >= 0 
+                    && (SETi = nodeNumbers(ix1 + 1, ix2, ix3 + 1)) >= 0 
+                    && (NETi = nodeNumbers(ix1 + 1, ix2 + 1, ix3 + 1)) >= 0 
+                    && (NWTi = nodeNumbers(ix1, ix2 + 1, ix3 + 1)) >= 0
+                    ) 
+                {
+                    SWB =SWBi;
+                    SEB =SEBi;
+                    NEB =NEBi;
+                    NWB =NWBi;
+                    SWT =SWTi;
+                    SET =SETi;
+                    NET =NETi;
+                    NWT =NWTi;
+
                     cells.push_back(makeUbTuple(SWB, SEB, NEB, NWB, SWT, SET, NET, NWT));
                 }
             }