diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
index 351b63b1ee1f6cfa068a2a7aaaf20e91cbe02e57..149a28d06f8d70fbf8598cfc72761c183b92eb6b 100644
--- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
+++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
@@ -10,7 +10,7 @@
 
 
 
-void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level, unsigned int t)
+void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int level, int max_level, unsigned int t)
 {
    if ( level == para->getFine() )
    {
@@ -214,7 +214,66 @@ void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level,
          //               para->getParD(level)->size_Mat_SP,  
          //               para->getParD(level)->evenOrOdd); 
          //getLastCudaError("KernelCasSP27 execution failed");
-         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+		 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+		 //porous media
+		 if (para->getSimulatePorousMedia())
+		 {
+			 //////////////////////////////////////////////////////////////////////////
+			 //Porous Media 0
+			 KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads,
+									para->getParD(level)->omega,
+									para->getParD(level)->neighborX_SP,
+									para->getParD(level)->neighborY_SP,
+									para->getParD(level)->neighborZ_SP,
+									para->getParD(level)->d0SP.f[0],
+									para->getParD(level)->size_Mat_SP,
+									level,
+									para->getForcesDev(),
+									pm[0]->getPorosity(),
+									pm[0]->getDarcyLBM(),
+									pm[0]->getForchheimerLBM(),
+									pm[0]->getSizePM(),
+									pm[0]->getHostNodeIDsPM(),
+									para->getParD(level)->evenOrOdd);
+			 getLastCudaError("KernelPMCumOneCompSP27 execution failed");
+			 //////////////////////////////////////////////////////////////////////////
+			 //Porous Media 1
+			 KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads,
+									para->getParD(level)->omega,
+									para->getParD(level)->neighborX_SP,
+									para->getParD(level)->neighborY_SP,
+									para->getParD(level)->neighborZ_SP,
+									para->getParD(level)->d0SP.f[0],
+									para->getParD(level)->size_Mat_SP,
+									level,
+									para->getForcesDev(),
+									pm[1]->getPorosity(),
+									pm[1]->getDarcyLBM(),
+									pm[1]->getForchheimerLBM(),
+									pm[1]->getSizePM(),
+									pm[1]->getHostNodeIDsPM(),
+									para->getParD(level)->evenOrOdd);
+			 getLastCudaError("KernelPMCumOneCompSP27 execution failed");
+			 //////////////////////////////////////////////////////////////////////////
+			 //Porous Media 2
+			 KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads,
+									para->getParD(level)->omega,
+									para->getParD(level)->neighborX_SP,
+									para->getParD(level)->neighborY_SP,
+									para->getParD(level)->neighborZ_SP,
+									para->getParD(level)->d0SP.f[0],
+									para->getParD(level)->size_Mat_SP,
+									level,
+									para->getForcesDev(),
+									pm[2]->getPorosity(),
+									pm[2]->getDarcyLBM(),
+									pm[2]->getForchheimerLBM(),
+									pm[2]->getSizePM(),
+									pm[2]->getHostNodeIDsPM(),
+									para->getParD(level)->evenOrOdd);
+			 getLastCudaError("KernelPMCumOneCompSP27 execution failed");
+		 }
+		 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          if (para->getDiffOn()==true)
          {
             if (para->getDiffMod() == 7)
@@ -565,16 +624,16 @@ void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level,
 			//				para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
 			//getLastCudaError("QVelDevComp27 execution failed");
 
-		 //if (para->getParD(level)->kInflowQ > 0)
-		 //{
-		 //     QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx,             para->getParD(level)->ny,
-			//						 para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,     para->getParD(level)->Qinflow.Vz,
-			//						 para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,      para->getParD(level)->Qinflow.q27[0], 
-			//						 para->getParD(level)->kInflowQ,        para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega,
-			//						 para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP,   para->getParD(level)->neighborZ_SP,
-			//						 para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
-		 //     getLastCudaError("QVelDevCompZeroPress27 execution failed");
-		 //}
+		 if (para->getParD(level)->kInflowQ > 0)
+		 {
+		      QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx,             para->getParD(level)->ny,
+									 para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,     para->getParD(level)->Qinflow.Vz,
+									 para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,      para->getParD(level)->Qinflow.q27[0], 
+									 para->getParD(level)->kInflowQ,        para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega,
+									 para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP,   para->getParD(level)->neighborZ_SP,
+									 para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
+		      getLastCudaError("QVelDevCompZeroPress27 execution failed");
+		 }
 			//QVelDevCompZeroPress27(  para->getParD(level)->numberofthreads, para->getParD(level)->nx,           para->getParD(level)->ny,
 			//						 para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,   para->getParD(level)->Qinflow.Vz,
 			//						 para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,    para->getParD(level)->Qinflow.q27[0], 
@@ -848,7 +907,7 @@ void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level,
       for (int internaltimestep=0;internaltimestep<2;internaltimestep++)
       {
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         updateGrid27(para, comm, level+1, max_level, t);
+         updateGrid27(para, comm, pm, level+1, max_level, t);
 		 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 		  //if (t>para->getStartTurn()){
 			 // //para->setPhi((para->getPhi()+para->getParD(level)->deltaPhi));
@@ -1405,16 +1464,16 @@ void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level,
 			//	 para->getParD(level)->neighborX_SP,          para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP,
 			//	 para->getParD(level)->size_Mat_SP,           para->getParD(level)->evenOrOdd);
 		 //getLastCudaError("QDev27 execution failed");
-		 //if (para->getParD(level)->kInflowQ > 0)
-		 //{
-		 //     QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx,             para->getParD(level)->ny,
-			//						 para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,     para->getParD(level)->Qinflow.Vz,
-			//						 para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,      para->getParD(level)->Qinflow.q27[0], 
-			//						 para->getParD(level)->kInflowQ,        para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega,
-			//						 para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP,   para->getParD(level)->neighborZ_SP,
-			//						 para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
-		 //     getLastCudaError("QVelDevCompZeroPress27 execution failed");
-		 //}
+		 if (para->getParD(level)->kInflowQ > 0)
+		 {
+		      QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx,             para->getParD(level)->ny,
+									 para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,     para->getParD(level)->Qinflow.Vz,
+									 para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,      para->getParD(level)->Qinflow.q27[0], 
+									 para->getParD(level)->kInflowQ,        para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega,
+									 para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP,   para->getParD(level)->neighborZ_SP,
+									 para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
+		      getLastCudaError("QVelDevCompZeroPress27 execution failed");
+		 }
 
 		 //if (para->getParD(level)->QGeom.kQ > 0)
 		 //{
diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h
index e0538c30452d72f185bced19f6a9ca3c38b20655..3215f034fa005cccc87307d2ca867483fb52b96b 100644
--- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h
+++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h
@@ -5,7 +5,8 @@
 #include "GPU/GPU_Interface.h"
 #include "Parameter/Parameter.h"
 #include "Communication/Communicator.h"
+#include "Calculation/PorousMedia.h"
 
-extern "C" void updateGrid27(Parameter* para, Communicator* comm, int level, int max_level, unsigned int t);
+extern "C" void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int level, int max_level, unsigned int t);
 
 #endif
diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp
index 4dd6ba12277fc35b87653c8cf8ec13b299817dc5..55c2a9e37dccafe7bbee3f8bb14169e84c2c796c 100644
--- a/src/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -375,7 +375,7 @@ void Simulation::run()
 		getLastCudaError("before starting a kernel we get an execution failed");
 		if (para->getMaxLevel()>=1)
          {
-            updateGrid27(para, comm, 1, para->getMaxLevel(), t);
+            updateGrid27(para, comm, pm, 1, para->getMaxLevel(), t);
          }
          ////////////////////////////////////////////////////////////////////////////////
          // Collision and Propagation
@@ -631,28 +631,28 @@ void Simulation::run()
 		//////////////////////////////////////////////////////////////////////////
 
 
-		//////////////////////////////////////////////////////////////////////////
-		//porous media
-		if (para->getSimulatePorousMedia())
-		{
-			KernelPMCumOneCompSP27( para->getParD(0)->numberofthreads,
-									para->getParD(0)->omega,			
-									para->getParD(0)->neighborX_SP, 
-									para->getParD(0)->neighborY_SP, 
-									para->getParD(0)->neighborZ_SP,
-									para->getParD(0)->d0SP.f[0],    
-									para->getParD(0)->size_Mat_SP,
-									0,
-									para->getForcesDev(),
-									pm0->getPorosity(),
-									pm0->getDarcyLBM(),
-									pm0->getForchheimerLBM(),
-									pm0->getSizePM(),
-									pm0->getHostNodeIDsPM(),
-									para->getParD(0)->evenOrOdd); 
-			getLastCudaError("KernelPMCumOneCompSP27 execution failed");
-		}
-		//////////////////////////////////////////////////////////////////////////
+		////////////////////////////////////////////////////////////////////////////
+		////porous media
+		//if (para->getSimulatePorousMedia())
+		//{
+		//	KernelPMCumOneCompSP27( para->getParD(0)->numberofthreads,
+		//							para->getParD(0)->omega,			
+		//							para->getParD(0)->neighborX_SP, 
+		//							para->getParD(0)->neighborY_SP, 
+		//							para->getParD(0)->neighborZ_SP,
+		//							para->getParD(0)->d0SP.f[0],    
+		//							para->getParD(0)->size_Mat_SP,
+		//							0,
+		//							para->getForcesDev(),
+		//							pm0->getPorosity(),
+		//							pm0->getDarcyLBM(),
+		//							pm0->getForchheimerLBM(),
+		//							pm0->getSizePM(),
+		//							pm0->getHostNodeIDsPM(),
+		//							para->getParD(0)->evenOrOdd); 
+		//	getLastCudaError("KernelPMCumOneCompSP27 execution failed");
+		//}
+		////////////////////////////////////////////////////////////////////////////
 
 
 
@@ -1083,13 +1083,13 @@ void Simulation::run()
 		    //            para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
 		    //            para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
 		    //  getLastCudaError("QVelDev27 execution failed");
-		      QVelDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx,           para->getParD(0)->ny,
-							para->getParD(0)->Qinflow.Vx,      para->getParD(0)->Qinflow.Vy,   para->getParD(0)->Qinflow.Vz,
-							para->getParD(0)->d0SP.f[0],       para->getParD(0)->Qinflow.k,    para->getParD(0)->Qinflow.q27[0], 
-							para->getParD(0)->kInflowQ,        para->getParD(0)->kInflowQ,     para->getParD(0)->omega,
-							para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
-							para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
-		      getLastCudaError("QVelDevComp27 execution failed");
+		     // QVelDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx,           para->getParD(0)->ny,
+							//para->getParD(0)->Qinflow.Vx,      para->getParD(0)->Qinflow.Vy,   para->getParD(0)->Qinflow.Vz,
+							//para->getParD(0)->d0SP.f[0],       para->getParD(0)->Qinflow.k,    para->getParD(0)->Qinflow.q27[0], 
+							//para->getParD(0)->kInflowQ,        para->getParD(0)->kInflowQ,     para->getParD(0)->omega,
+							//para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
+							//para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
+		     // getLastCudaError("QVelDevComp27 execution failed");
 		     // QVelDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx,           para->getParD(0)->ny,
 							//para->getParD(0)->QGeom.Vx,        para->getParD(0)->QGeom.Vy,     para->getParD(0)->QGeom.Vz,
 							//para->getParD(0)->d0SP.f[0],       para->getParD(0)->QGeom.k,      para->getParD(0)->QGeom.q27[0], 
@@ -1097,13 +1097,13 @@ void Simulation::run()
 							//para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
 							//para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
 		     // getLastCudaError("QVelDevComp27 execution failed");
-		      //QVelDevCompZeroPress27(para->getParD(0)->numberofthreads, para->getParD(0)->nx,             para->getParD(0)->ny,
-								//	 para->getParD(0)->Qinflow.Vx,      para->getParD(0)->Qinflow.Vy,     para->getParD(0)->Qinflow.Vz,
-								//	 para->getParD(0)->d0SP.f[0],       para->getParD(0)->Qinflow.k,      para->getParD(0)->Qinflow.q27[0], 
-								//	 para->getParD(0)->kInflowQ,        para->getParD(0)->Qinflow.kArray, para->getParD(0)->omega,
-								//	 para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP,   para->getParD(0)->neighborZ_SP,
-								//	 para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
-		      //getLastCudaError("QVelDevComp27 execution failed");
+		      QVelDevCompZeroPress27(para->getParD(0)->numberofthreads, para->getParD(0)->nx,             para->getParD(0)->ny,
+									 para->getParD(0)->Qinflow.Vx,      para->getParD(0)->Qinflow.Vy,     para->getParD(0)->Qinflow.Vz,
+									 para->getParD(0)->d0SP.f[0],       para->getParD(0)->Qinflow.k,      para->getParD(0)->Qinflow.q27[0], 
+									 para->getParD(0)->kInflowQ,        para->getParD(0)->Qinflow.kArray, para->getParD(0)->omega,
+									 para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP,   para->getParD(0)->neighborZ_SP,
+									 para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
+		      getLastCudaError("QVelDevComp27 execution failed");
 
 			  ////////////////////////////////////////////////////////////////////////////
 		      //QVeloDevEQ27(para->getParD(0)->numberofthreads,
@@ -1333,12 +1333,12 @@ void Simulation::run()
 			//getLastCudaError("QDevComp27 (Geom) execution failed");
 
 
-		QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
-						para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
-						para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
-						para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
-						para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
-		getLastCudaError("QPressDev27 execution failed");
+		//QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
+		//				para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
+		//				para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
+		//				para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
+		//				para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
+		//getLastCudaError("QPressDev27 execution failed");
 
 		//QPressDevEQZ27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
 		//				para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
@@ -1432,15 +1432,15 @@ void Simulation::run()
 
 		 //////////////////////////////////////////////////////////////////////////////////
 		 ////press EQ comp
-		 //if (para->getParD(0)->QPress.kQ > 0)
-		 //{
-			// // //////////////////////////////////////////////////////////////////////////////////
-			 //QPressNoRhoDev27(  para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
-			 //					para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
-			 //					para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
-			 //					para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
-			 //					para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
-			 //getLastCudaError("QPressNoRhoDev27 execution failed");
+		 if (para->getParD(0)->QPress.kQ > 0)
+		 {
+			 // //////////////////////////////////////////////////////////////////////////////////
+			 QPressNoRhoDev27(  para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
+			 					para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
+			 					para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
+			 					para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
+			 					para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
+			 getLastCudaError("QPressNoRhoDev27 execution failed");
 			 //QPressDevEQZ27(para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
 		 	//				para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
 				//			para->getParD(0)->QPress.kN,       para->getParD(0)->kDistTestRE.f[0],       
@@ -1449,14 +1449,14 @@ void Simulation::run()
 		 	//				para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
 			 //getLastCudaError("QPressDevEQZ27 execution failed");
 
- 		////	QInflowScaleByPressDev27(   para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
-			////							para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
-			////							para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
-			////							para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
-			////							para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
-			////getLastCudaError("QInflowScaleByPressDev27 execution failed");
+ 		//	QInflowScaleByPressDev27(   para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, 
+			//							para->getParD(0)->d0SP.f[0],       para->getParD(0)->QPress.k,  
+			//							para->getParD(0)->QPress.kN,       para->getParD(0)->QPress.kQ,    para->getParD(0)->omega,
+			//							para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
+			//							para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
+			//getLastCudaError("QInflowScaleByPressDev27 execution failed");
 
-		 //}
+		 }
 		 //////////////////////////////////////////////////////////////////////////////////
 		 ////only for a round off error test
 		 //para->cudaCopyTestREtoHost(0,para->getParH(0)->QPress.kQ);
@@ -2623,91 +2623,91 @@ void Simulation::run()
 void Simulation::porousMedia()
 {
 	double porosity, darcySI, forchheimerSI;
-	double dxLBM = 0.004;
-	double dtLBM = 0.000007;
+	double dxLBM = 0.00390625;
+	double dtLBM = 0.00000658;
 	unsigned int level, geo;
 	double startX, startY, startZ, endX, endY, endZ;
 	//////////////////////////////////////////////////////////////////////////
 
-	//////////////////////////////////////////////////////////////////////////
-	//Test = porous media 0
-	porosity = 0.7;
-	darcySI = 137.36; //[1/s]
-	forchheimerSI = 1037.8; //[1/m]
-	level = para->getFine();
-	geo = GEO_PM_0;
-	startX = 20.0;
-	startY =  0.0;
-	startZ =  0.0;
-	endX = 40.0;
-	endY = 22.0;
-	endZ = 22.0;
-	pm0 = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
-	pm0->setStartCoordinates(startX, startY, startZ);
-	pm0->setEndCoordinates(endX, endY, endZ);
-	pm0->setResistanceLBM();
-	definePMarea(pm0);
-	//////////////////////////////////////////////////////////////////////////
-
 	////////////////////////////////////////////////////////////////////////////
-	////Kondensator = porous media 0
+	////Test = porous media 0
 	//porosity = 0.7;
 	//darcySI = 137.36; //[1/s]
 	//forchheimerSI = 1037.8; //[1/m]
 	//level = para->getFine();
 	//geo = GEO_PM_0;
-	//startX = -0.715882;
-	//startY = -0.260942;
-	//startZ = -0.031321;
-	//endX = -0.692484;
-	//endY =  0.277833;
-	//endZ =  0.360379;
-	//pm0 = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
-	//pm0->setStartCoordinates(startX, startY, startZ);
-	//pm0->setEndCoordinates(endX, endY, endZ);
-	//pm0->setResistanceLBM();
-	//definePMarea(pm0);
+	//startX = 20.0;
+	//startY =  0.0;
+	//startZ =  0.0;
+	//endX = 40.0;
+	//endY = 22.0;
+	//endZ = 22.0;
+	//pm[0] = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
+	//pm[0]->setStartCoordinates(startX, startY, startZ);
+	//pm[0]->setEndCoordinates(endX, endY, endZ);
+	//pm[0]->setResistanceLBM();
+	//definePMarea(pm[0]);
 	////////////////////////////////////////////////////////////////////////////
 
-	////////////////////////////////////////////////////////////////////////////
-	////NT-Kuehler = porous media 1
-	//porosity = 0.6;
-	//darcySI = 149.98; //[1/s]
-	//forchheimerSI = 960.57; //[1/m]
-	//level = para->getFine();
-	//geo = GEO_PM_1;
-	//startX = -0.696146;
-	//startY = -0.32426;
-	//startZ = -0.0421345;
-	//endX = -0.651847;
-	//endY =  0.324822;
-	//endZ =  0.057098;
-	//pm1 = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
-	//pm1->setStartCoordinates(startX, startY, startZ);
-	//pm1->setEndCoordinates(endX, endY, endZ);
-	//pm1->setResistanceLBM();
-	//definePMarea(pm1);
-	////////////////////////////////////////////////////////////////////////////
+	//////////////////////////////////////////////////////////////////////////
+	//Kondensator = porous media 0
+	porosity = 0.7;
+	darcySI = 137.36; //[1/s]
+	forchheimerSI = 1037.8; //[1/m]
+	level = para->getFine();
+	geo = GEO_PM_0;
+	startX = -0.715882;
+	startY = -0.260942;
+	startZ = -0.031321;
+	endX = -0.692484;
+	endY =  0.277833;
+	endZ =  0.360379;
+	pm[0] = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
+	pm[0]->setStartCoordinates(startX, startY, startZ);
+	pm[0]->setEndCoordinates(endX, endY, endZ);
+	pm[0]->setResistanceLBM();
+	definePMarea(pm[0]);
+	//////////////////////////////////////////////////////////////////////////
 
-	////////////////////////////////////////////////////////////////////////////
-	////Wasserkuehler = porous media 2
-	//porosity = 0.6;
-	//darcySI = 148.69; //[1/s]
-	//forchheimerSI = 629.45; //[1/m]
-	//level = para->getFine();
-	//geo = GEO_PM_2;
-	//startX = -0.692681;
-	//startY = -0.324954;
-	//startZ = 0.0789429;
-	//endX = -0.657262;
-	//endY =  0.32538;
-	//endZ =  0.400974;
-	//pm2 = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
-	//pm2->setStartCoordinates(startX, startY, startZ);
-	//pm2->setEndCoordinates(endX, endY, endZ);
-	//pm2->setResistanceLBM();
-	//definePMarea(pm2);
-	////////////////////////////////////////////////////////////////////////////
+	//////////////////////////////////////////////////////////////////////////
+	//NT-Kuehler = porous media 1
+	porosity = 0.6;
+	darcySI = 149.98; //[1/s]
+	forchheimerSI = 960.57; //[1/m]
+	level = para->getFine();
+	geo = GEO_PM_1;
+	startX = -0.696146;
+	startY = -0.32426;
+	startZ = -0.0421345;
+	endX = -0.651847;
+	endY =  0.324822;
+	endZ =  0.057098;
+	pm[1] = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
+	pm[1]->setStartCoordinates(startX, startY, startZ);
+	pm[1]->setEndCoordinates(endX, endY, endZ);
+	pm[1]->setResistanceLBM();
+	definePMarea(pm[1]);
+	//////////////////////////////////////////////////////////////////////////
+
+	//////////////////////////////////////////////////////////////////////////
+	//Wasserkuehler = porous media 2
+	porosity = 0.6;
+	darcySI = 148.69; //[1/s]
+	forchheimerSI = 629.45; //[1/m]
+	level = para->getFine();
+	geo = GEO_PM_2;
+	startX = -0.692681;
+	startY = -0.324954;
+	startZ = 0.0789429;
+	endX = -0.657262;
+	endY =  0.32538;
+	endZ =  0.400974;
+	pm[2] = new PorousMedia(porosity, geo, darcySI, forchheimerSI, dxLBM, dtLBM, level);
+	pm[2]->setStartCoordinates(startX, startY, startZ);
+	pm[2]->setEndCoordinates(endX, endY, endZ);
+	pm[2]->setResistanceLBM();
+	definePMarea(pm[2]);
+	//////////////////////////////////////////////////////////////////////////
 
 }
 void Simulation::definePMarea(PorousMedia* pm)
@@ -2734,7 +2734,7 @@ void Simulation::definePMarea(PorousMedia* pm)
 
 	para->cudaCopySP(level);
 	pm->setSizePM(counter);
-	para->cudaAllocPorousMedia(pm0, level);
+	para->cudaAllocPorousMedia(pm, level);
 	unsigned int *tpmArrayIDs = pm->getHostNodeIDsPM();
 	
 	for (unsigned int j = 0; j <= pm->getSizePM(); j++)
diff --git a/src/VirtualFluids_GPU/LBM/Simulation.h b/src/VirtualFluids_GPU/LBM/Simulation.h
index ec77b6c9e727360dfd56bf1c3e06b2f2a99023d7..a27e08ed3db3dc1b442a607de17e550bb9fc3260 100644
--- a/src/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/VirtualFluids_GPU/LBM/Simulation.h
@@ -52,9 +52,10 @@ protected:
 	ForceCalculations* forceCalculator;
 
 	//Porous Media
-	PorousMedia* pm0;
-	PorousMedia* pm1;
-	PorousMedia* pm2;
+	PorousMedia* pm[3];
+	//PorousMedia* pm0;
+	//PorousMedia* pm1;
+	//PorousMedia* pm2;
 
 	//KQ - Schlaff
 	unsigned int            kNQ, kSQ, kEQ, kWQ;