diff --git a/source/Applications/DLR-F16-Solid/f16-solid-coarse.cfg b/source/Applications/DLR-F16-Solid/f16-solid-coarse.cfg
index 5c6cc98a524836dd42cbecc956e66fc6ac9fae21..ef4dfc22d540e8f2f234e4cfa5d1cb0fcaad6e46 100644
--- a/source/Applications/DLR-F16-Solid/f16-solid-coarse.cfg
+++ b/source/Applications/DLR-F16-Solid/f16-solid-coarse.cfg
@@ -1,16 +1,16 @@
-pathOut = d:/temp/DLR-F16-Solid-L1
+pathOut = d:/temp/DLR-F16-Solid-L6
 pathGeo = d:/Projects/SFB880/DLR-F16/Geometry
 
 fngFileWhole1 = F16_broad_Quad_noTape_full.stl
 fngFileWhole2 = F16_broad_Quad_thickTape_full.stl
 
-accuracy = 1
+accuracy = 0
 
 reinit = false
 pathReInit = /work/koskuche/DLR-F16_L1
 stepReInit = 10000
 
-numOfThreads = 1
+numOfThreads = 8
 availMem = 10e9
 
 logToFile = false
@@ -23,44 +23,44 @@ logToFile = false
 #boundingBox = -0.125 1.5 0.0 0.03 -1.1 0.3
 #boundingBox = -0.90 1.5 0.0 0.03 -1.05 0.66
 #boundingBox = -0.30 2.52 0.0 0.03 -2.08 2.08
-boundingBox = -0.3 1.17 0.0 0.03 -1.11 1.11
+boundingBox = -0.3 1.17 0.0 0.03 -1.17 1.17
 
 blockNx = 10 10 10
 
-refineLevel = 1
+refineLevel = 6
 
 #deltaXfine = 0.003 #level 0
-deltaXfine = 0.0015 #level 1
+#deltaXfine = 0.0015 #level 1
 #deltaXfine = 0.00075 #level 2
 #deltaXfine = 0.000375 #level 3
 #deltaXfine = 0.0001875 #level 4
 #deltaXfine = 0.00009375 #level 5
-#deltaXfine = 0.000046875 #level 6
+deltaXfine = 0.000046875 #level 6
 #deltaXfine = 0.0000234375 #level 7
 
 startDistance = -1.0e-3
-#refineDistance = 0.6e-3
-refineDistance = 30.0e-3
+refineDistance = 0.6e-3
+#refineDistance = 30.0e-3
 
-writeBlocks = false
+writeBlocks = true
 
-newStart = false
-restartStep = 14000
+newStart = true
+restartStep = 3000
 
 cpStep = 1000
 cpStart = 1000
 
-outTimeStep = 1000
-outTimeStart = 1000
+outTimeStep = 100
+outTimeStart = 100
 
-endTime = 26000
+endTime = 3100
 
 
 #Cp
 #pcpStart = 1000000
 #pcpStop  = 1000000
 
-timeAvStart = 100
-timeAvStop  = 100
+timeAvStart = 3000
+timeAvStop  = 5000
 
 nupsStep = 100 100 10000000
diff --git a/source/Applications/DLR-F16-Solid/f16.cpp b/source/Applications/DLR-F16-Solid/f16.cpp
index d466749df99c369788d2bd2919f3236e7b611e1f..1924e67aa76bfdbc34a191296cce6b137f246406 100644
--- a/source/Applications/DLR-F16-Solid/f16.cpp
+++ b/source/Applications/DLR-F16-Solid/f16.cpp
@@ -133,6 +133,7 @@ void run(string configname)
       //if (myid==0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut+"/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
       //return;
 
+
       ////////////////////////////////////////////////////////////////////////
       //Grid
       //////////////////////////////////////////////////////////////////////////
@@ -458,6 +459,11 @@ void run(string configname)
          }
          grid->updateDistributedBlocks(comm);
 
+         if (writeBlocks)
+         {
+            migCoProcessor->writeBlocks(0);
+         }
+
          std::vector<int> dirs;
          for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
          {
@@ -520,6 +526,12 @@ void run(string configname)
             ppblocks.process(3);
          }
 
+         //SetSolidBlocksBlockVisitor fngSolidVisitor(fngIntrWhole2);
+         //grid->accept(fngSolidVisitor);
+         //SetBcBlocksBlockVisitor fngBcVisitor(fngIntrWhole2);
+         //grid->accept(fngBcVisitor);
+
+
          GbCuboid3DPtr mic6(new GbCuboid3D( 0.3, 0.015, -0.46+4.25*deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.46+5.25*deltaXcoarse));
          if (myid==0) GbSystem3D::writeGeoObject(mic6.get(), pathOut+"/geo/mic6", WbWriterVtkXmlBinary::getInstance());
          GbCuboid3DPtr mic7(new GbCuboid3D(0.3, 0.015, -0.3+4.25*deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.3+5.25*deltaXcoarse));
@@ -550,10 +562,7 @@ void run(string configname)
             UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
          }
 
-         if (writeBlocks)
-         {
-            migCoProcessor->writeBlocks(0);
-         }
+
 
          SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
          grid->accept(kernelVisitor);
@@ -576,6 +585,13 @@ void run(string configname)
 
          //BC
          intHelper.setBC();
+
+         //for (SPtr<Block3D> block : fngIntrWhole2->getSolidBlockSet())
+         //{
+         //   fngIntrWhole2->setDifferencesToGbObject3D(block);
+         //}
+         //fngIntrWhole2->initInteractor();
+         
          if (myid==0) UBLOG(logINFO, "intHelper.setBC():end");
 
          if (myid==0)
@@ -745,113 +761,39 @@ void run(string configname)
       if (myid==0) GbSystem3D::writeGeoObject(bbBox.get(), pathOut+"/geo/bbBox", WbWriterVtkXmlASCII::getInstance());
       SPtr<WriteMQFromSelectionCoProcessor> writeMQSelectCoProcessor(new WriteMQFromSelectionCoProcessor(grid, stepSch, bbBox, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
 
-      //SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      //SPtr<TimeAveragedValuesCoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-      //   TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
-      //tav->setWithGhostLayer(true);
+      SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
+      SPtr<TimeAveragedValuesCoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
+         TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
+      tav->setWithGhostLayer(true);
 
-      //SPtr<IntegrateValuesHelper> mic1(new IntegrateValuesHelper(grid, comm, 0.3-deltaXfine, 0.015, 0.0005, 0.3, 0.015+deltaXfine, 0.0005+deltaXfine));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic1->getBoundingBox().get(), pathOut+"/geo/mic1", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<UbScheduler> stepMV(new UbScheduler(1, 0, 1000000));
-      //SPtr<TimeseriesCoProcessor> tsp1(new TimeseriesCoProcessor(grid, stepMV, mic1, pathOut+"/mic/mic1", comm));
-
-      //SPtr<IntegrateValuesHelper> mic2(new IntegrateValuesHelper(grid, comm, 0.3+deltaXfine, 0.015, 0.001685, 0.3, 0.015+deltaXfine, 0.001685+deltaXfine));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic2->getBoundingBox().get(), pathOut+"/geo/mic2", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp2(new TimeseriesCoProcessor(grid, stepMV, mic2, pathOut+"/mic/mic2", comm));
-
-      //SPtr<IntegrateValuesHelper> mic3(new IntegrateValuesHelper(grid, comm, 0.3-deltaXcoarse, 0.015, -0.46+4.25*deltaXcoarse, 0.3, 0.015+deltaXcoarse, -0.46+5.25*deltaXcoarse));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic3->getBoundingBox().get(), pathOut+"/geo/mic3", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp3(new TimeseriesCoProcessor(grid, stepMV, mic3, pathOut+"/mic/mic3", comm));
-
-      //SPtr<IntegrateValuesHelper> mic4(new IntegrateValuesHelper(grid, comm, 0.3-deltaXcoarse, 0.015, 0.46-5.25*deltaXcoarse, 0.3, 0.015+deltaXcoarse, 0.46-4.25*deltaXcoarse));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic4->getBoundingBox().get(), pathOut+"/geo/mic4", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp4(new TimeseriesCoProcessor(grid, stepMV, mic4, pathOut+"/mic/mic4", comm));
-
-      //SPtr<IntegrateValuesHelper> mic5(new IntegrateValuesHelper(grid, comm, 0.3+deltaXfine, 0.015, 0.000517+0.00037+7.0*deltaXfine, 0.3+2.0*deltaXfine, 0.015+deltaXfine, 0.000517+0.00037+8.0*deltaXfine));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic5->getBoundingBox().get(), pathOut+"/geo/mic5", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp5(new TimeseriesCoProcessor(grid, stepMV, mic5, pathOut+"/mic/mic5", comm));
-
-      ////0.46 m / 1.5c
-      //SPtr<IntegrateValuesHelper> mic6(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -0.4599-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.4599));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic6->getBoundingBox().get(), pathOut+"/geo/mic6", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp6(new TimeseriesCoProcessor(grid, stepMV, mic6, pathOut+"/mic/mic6", comm));
-
-      ////0.3 m / 1.0c
-      //SPtr<IntegrateValuesHelper> mic7(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -0.299, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.299+deltaXcoarse));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic7->getBoundingBox().get(), pathOut+"/geo/mic7", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp7(new TimeseriesCoProcessor(grid, stepMV, mic7, pathOut+"/mic/mic7", comm));
-
-      ////0.075 m / 0.25c
-      //SPtr<IntegrateValuesHelper> mic8(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -0.0744-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.0744));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic8->getBoundingBox().get(), pathOut+"/geo/mic8", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp8(new TimeseriesCoProcessor(grid, stepMV, mic8, pathOut+"/mic/mic8", comm));
-
-      double dist = 0.0744; //0.25c
       SPtr<UbScheduler> stepMV(new UbScheduler(1, 0, 1000000));
-      //0.0
-      //SPtr<IntegrateValuesHelper> mic0new(new IntegrateValuesHelper(grid, comm, 0.3+deltaXfine, 0.015, 0.000517+0.00037+7.0*deltaXfine, 0.3+2.0*deltaXfine, 0.015+deltaXfine, 0.000517+0.00037+8.0*deltaXfine));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic0new->getBoundingBox().get(), pathOut+"/geo/mic0new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp0(new TimeseriesCoProcessor(grid, stepMV, mic0new, pathOut+"/mic/mic0new", comm));
-      ////0.25c
-      //SPtr<IntegrateValuesHelper> mic1new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic1new->getBoundingBox().get(), pathOut+"/geo/mic1new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp1(new TimeseriesCoProcessor(grid, stepMV, mic1new, pathOut+"/mic/mic1new", comm));
-      ////0.5c
-      //SPtr<IntegrateValuesHelper> mic2new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*2.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*2.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic2new->getBoundingBox().get(), pathOut+"/geo/mic2new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp2(new TimeseriesCoProcessor(grid, stepMV, mic2new, pathOut+"/mic/mic2new", comm));
-      ////0.75c
-      //SPtr<IntegrateValuesHelper> mic3new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*3.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*3.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic3new->getBoundingBox().get(), pathOut+"/geo/mic3new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp3(new TimeseriesCoProcessor(grid, stepMV, mic3new, pathOut+"/mic/mic3new", comm));
-      ////1.0c
-      //SPtr<IntegrateValuesHelper> mic4new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*4.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*4.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic4new->getBoundingBox().get(), pathOut+"/geo/mic4new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp4(new TimeseriesCoProcessor(grid, stepMV, mic4new, pathOut+"/mic/mic4new", comm));
-      ////1.25c
-      //SPtr<IntegrateValuesHelper> mic5new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*5.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*5.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic5new->getBoundingBox().get(), pathOut+"/geo/mic5new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp5(new TimeseriesCoProcessor(grid, stepMV, mic5new, pathOut+"/mic/mic5new", comm));
-      ////1.5c
-      //SPtr<IntegrateValuesHelper> mic6new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*6.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*6.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic6new->getBoundingBox().get(), pathOut+"/geo/mic6new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp6(new TimeseriesCoProcessor(grid, stepMV, mic6new, pathOut+"/mic/mic6new", comm));
-      ////1.75c
-      //SPtr<IntegrateValuesHelper> mic7new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*7.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*7.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic7new->getBoundingBox().get(), pathOut+"/geo/mic7new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp7(new TimeseriesCoProcessor(grid, stepMV, mic7new, pathOut+"/mic/mic7new", comm));
-      ////2.0c
-      //SPtr<IntegrateValuesHelper> mic8new(new IntegrateValuesHelper(grid, comm, 0.3, 0.015, -dist*8.0-deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -dist*8.0));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic8new->getBoundingBox().get(), pathOut+"/geo/mic8new", WbWriterVtkXmlBinary::getInstance());
-      //SPtr<TimeseriesCoProcessor> tsp8(new TimeseriesCoProcessor(grid, stepMV, mic8new, pathOut+"/mic/mic8new", comm));
-
       SPtr<MicrophoneArrayCoProcessor> micCoProcessor(new MicrophoneArrayCoProcessor(grid, stepSch, pathOut, comm) );
-      micCoProcessor->addMicrophone(Vector3D(0.47, 0.015, -1.0));
-      micCoProcessor->addMicrophone(Vector3D(0.47, 0.015, -0.5));
-      micCoProcessor->addMicrophone(Vector3D(0.47, 0.015, 0.0));
-      micCoProcessor->addMicrophone(Vector3D(0.47, 0.015, 0.5));
-      micCoProcessor->addMicrophone(Vector3D(0.47, 0.015, 1.0));
-
-
+      double offsetX1 = 0.017;
+      double offsetZ1 = 0.11375;
+      std::vector<UbTupleFloat3> nodes;
+      for (int i = 0; i <= 10; i++)
+      {
+         micCoProcessor->addMicrophone(Vector3D(0.31+offsetX1*double(i), 0.015, 0.0-offsetZ1*double(i)));
+         nodes.push_back(UbTupleFloat3(float(0.31+offsetX1*float(i)), float(0.015), float(0.0-offsetZ1*float(i))));
+      }
+      double offsetX2 = 0.1;
+      for (int i = 0; i <= 6; i++)
+      {
+         micCoProcessor->addMicrophone(Vector3D(0.17+offsetX2*double(i), 0.015, -1.1375));
+         nodes.push_back(UbTupleFloat3(float(0.17+offsetX2*float(i)), float(0.015), float(-1.1375)));
+      }
+      
+      if (myid==0) WbWriterVtkXmlBinary::getInstance()->writeNodes(pathOut+"/geo/mic", nodes);
 
       omp_set_num_threads(numOfThreads);
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
       SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
       calculator->addCoProcessor(nupsCoProcessor);
-      //calculator->addCoProcessor(tsp0);
-      //calculator->addCoProcessor(tsp1);
-      //calculator->addCoProcessor(tsp2);
-      //calculator->addCoProcessor(tsp3);
-      //calculator->addCoProcessor(tsp4);
-      //calculator->addCoProcessor(tsp5);
-      //calculator->addCoProcessor(tsp6);
-      //calculator->addCoProcessor(tsp7);
-      //calculator->addCoProcessor(tsp8);
       calculator->addCoProcessor(micCoProcessor);
-      //calculator->addCoProcessor(restartCoProcessor);
-      //calculator->addCoProcessor(writeMQSelectCoProcessor);
-      //calculator->addCoProcessor(writeMQCoProcessor);
-      //calculator->addCoProcessor(tav);
+      calculator->addCoProcessor(restartCoProcessor);
+      calculator->addCoProcessor(writeMQSelectCoProcessor);
+      calculator->addCoProcessor(writeMQCoProcessor);
+      calculator->addCoProcessor(tav);
 
 
       if (myid==0) UBLOG(logINFO, "Simulation-start");
diff --git a/source/VirtualFluidsBasic/basics/utilities/UbLogger.h b/source/VirtualFluidsBasic/basics/utilities/UbLogger.h
index 0f6cbd37b4db4a2b298d0fbcb5b023e51fa22802..baaf8e5e47c421846f9da423da635dac16de9261 100644
--- a/source/VirtualFluidsBasic/basics/utilities/UbLogger.h
+++ b/source/VirtualFluidsBasic/basics/utilities/UbLogger.h
@@ -12,7 +12,6 @@
 #include <iostream>
 #include <fstream>
 #include <iomanip>
-#include <PointerDefinitions.h>
 
 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)  || defined(_WIN64)  || defined(__WIN64__)
    #include <windows.h>
diff --git a/source/VirtualFluidsBasic/basics/writer/WbWriterVtkXmlBinary.cpp b/source/VirtualFluidsBasic/basics/writer/WbWriterVtkXmlBinary.cpp
index a6a0bcbaed4341d2070534805f2516b82c9047df..e10ef65395d0ddfa6724b4a30dc66a6b2f35ed99 100644
--- a/source/VirtualFluidsBasic/basics/writer/WbWriterVtkXmlBinary.cpp
+++ b/source/VirtualFluidsBasic/basics/writer/WbWriterVtkXmlBinary.cpp
@@ -1494,7 +1494,7 @@ std::string WbWriterVtkXmlBinary::writeNodesWithNodeData(const std::string& file
    int bytesCellConnectivty = 1 /*nodes per cell */ * nofNodes * sizeof(int  );
    int bytesCellOffsets     = 1 /*offset per cell*/ * nofNodes * sizeof(int  );
    int bytesCellTypes       = 1 /*type of oct    */ * nofNodes * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar         */ * nofNodes * sizeof(float); 
+   int bytesScalarData      = 1 /*scalar         */ * nofNodes * sizeof(double); 
 
    int offset = 0;
    //VTK FILE
@@ -1523,7 +1523,7 @@ std::string WbWriterVtkXmlBinary::writeNodesWithNodeData(const std::string& file
    out<<"         <PointData>\n";
    for(size_t s=0; s<datanames.size(); ++s)
    {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
+      out<< "            <DataArray type=\"Float64\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
       offset += (bytesPerByteVal + bytesScalarData);
    }
    out<<"         </PointData>\n";
@@ -1569,8 +1569,10 @@ std::string WbWriterVtkXmlBinary::writeNodesWithNodeData(const std::string& file
       for(size_t d=0; d<nodedata[s].size(); ++d)
       {
          //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
+         //float tmp = (float)nodedata[s][d];
+         //out.write((char*)&tmp,sizeof(float));
+         double tmp = nodedata[s][d];
+         out.write((char*)&tmp, sizeof(double));
       }
    }
    out<<"\n</AppendedData>\n";
diff --git a/source/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
index e9acb40fb0eb4eb62ca0b52b8b0dcb210995aab4..86bc2b7a35c816442a6135b394696c888ccd9001 100644
--- a/source/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.cpp
@@ -8,6 +8,8 @@
 #include "DataSet3D.h"
 #include "D3Q27System.h"
 #include "UbScheduler.h"
+#include "BCProcessor.h"
+#include "BCArray3D.h"
 
 MicrophoneArrayCoProcessor::MicrophoneArrayCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string & path, SPtr<Communicator> comm) : CoProcessor(grid, s), path(path), comm(comm)
 {
@@ -48,32 +50,38 @@ void MicrophoneArrayCoProcessor::addMicrophone(Vector3D coords)
          SPtr<ILBMKernel> kernel = block->getKernel();
          if (kernel)
          {
-            if (kernel->getCompressible())
+            SPtr<BCArray3D> bcarray = kernel->getBCProcessor()->getBCArray();
+            UbTupleInt3 nodes = grid->getNodeIndexes(block, coords[0], coords[1], coords[2]);
+            if (!bcarray->isUndefined(val<1>(nodes), val<2>(nodes), val<3>(nodes)))
             {
-               calcMacros = &D3Q27System::calcCompMacroscopicValues;
-            }
-            else
-            {
-               calcMacros = &D3Q27System::calcIncompMacroscopicValues;
-            }
-            SPtr<Mic> mic(new Mic);
-            mic->distridution = kernel->getDataSet()->getFdistributions();
-            mic->nodeIndexes = grid->getNodeIndexes(block, coords[0], coords[1], coords[2]);
-            microphones.push_back(mic);
-            values.resize((microphones.size()+1)*static_cast<int>(scheduler->getMinStep()));
 
-            std::string fname = path+"/mic/mic_"+UbSystem::toString(comm->getProcessID())+".csv";
-            std::ofstream ostr;
-            ostr.open(fname.c_str(), std::ios_base::out | std::ios_base::app);
-            if (!ostr)
-            {
-               ostr.clear();
-               std::string path = UbSystem::getPathFromString(fname);
-               if (path.size()>0) { UbSystem::makeDirectory(path); ostr.open(fname.c_str(), std::ios_base::out | std::ios_base::app); }
-               if (!ostr) throw UbException(UB_EXARGS, "couldn't open file "+fname);
+               if (kernel->getCompressible())
+               {
+                  calcMacros = &D3Q27System::calcCompMacroscopicValues;
+               }
+               else
+               {
+                  calcMacros = &D3Q27System::calcIncompMacroscopicValues;
+               }
+               SPtr<Mic> mic(new Mic);
+               mic->distridution = kernel->getDataSet()->getFdistributions();
+               mic->nodeIndexes = grid->getNodeIndexes(block, coords[0], coords[1], coords[2]);
+               microphones.push_back(mic);
+               values.resize((microphones.size()+1)*static_cast<int>(scheduler->getMinStep()));
+
+               std::string fname = path+"/mic/mic_"+UbSystem::toString(comm->getProcessID())+".csv";
+               std::ofstream ostr;
+               ostr.open(fname.c_str(), std::ios_base::out | std::ios_base::app);
+               if (!ostr)
+               {
+                  ostr.clear();
+                  std::string path = UbSystem::getPathFromString(fname);
+                  if (path.size()>0) { UbSystem::makeDirectory(path); ostr.open(fname.c_str(), std::ios_base::out | std::ios_base::app); }
+                  if (!ostr) throw UbException(UB_EXARGS, "couldn't open file "+fname);
+               }
+               ostr << "#microphone position: " << coords[0] << "; " << coords[1] << "; " << coords[2] << "; " << "\n";
+               return;
             }
-            ostr << "#microphone position: " << coords[0] << "; " << coords[1] << "; " << coords[2] << "; " << "\n";
-            return;
          }
       }
    }