diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
index 42b39be681fffac655e9ee8fff8d04cda79f5783..f7320f4d5e3dd22ea59ab9f03fd1d8547597e5ee 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -81,6 +81,8 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    this->para = para;
 
    devCheck(comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev()));
+   
+   para->initLBMSimulationParameter();
 
    gridProvider->allocAndCopyForcing();
    gridProvider->allocAndCopyQuadricLimiters();
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
index ffabc467d049bf9b93e6b199dc92ad90242031ff..f394ea968a7362264fa77071d8c90b26b4d01348 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
@@ -50,7 +50,7 @@ Parameter::Parameter(const vf::basics::ConfigurationFile &configData, int number
     ic.myid = myId;
 
     readConfigData(configData);
-    initLBMSimulationParameter();
+    //initLBMSimulationParameter();
 }
 
 void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData)
@@ -373,12 +373,7 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData)
         this->setDoRestart(configData.getValue<bool>("DoRestart"));
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     if (configData.contains("NOGL"))
-    {
-        maxlevel = configData.getValue<int>("NOGL") - 1;
-        fine = maxlevel;
-    }
-    parH.resize(maxlevel + 1);
-    parD.resize(maxlevel + 1);
+        setMaxLevel(configData.getValue<int>("NOGL"));
 
     this->setGridX(std::vector<int>(this->getMaxLevel() + 1, 32));
     this->setGridY(std::vector<int>(this->getMaxLevel() + 1, 32));
@@ -622,6 +617,9 @@ void Parameter::setD3Qxx(int d3qxx)
 void Parameter::setMaxLevel(int maxlevel)
 {
     this->maxlevel = maxlevel-1;
+    this->fine     = this->maxlevel;
+    parH.resize(this->maxlevel + 1);
+    parD.resize(this->maxlevel + 1);
 }
 void Parameter::setParticleBasicLevel(int pbl)
 {
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index c95a79771a4433036a695b3990d306fca6709a3c..60beb9f637644d0654732b1f2ece5df43ae1f456 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -314,6 +314,7 @@ class VIRTUALFLUIDS_GPU_EXPORT Parameter
 {
 public:
     Parameter(const vf::basics::ConfigurationFile &configData, int numberOfProcesses, int myId);
+    void initLBMSimulationParameter();
 
     std::shared_ptr<LBMSimulationParameter> getParH(int level);
     std::shared_ptr<LBMSimulationParameter> getParD(int level);
@@ -750,11 +751,10 @@ public:
     void setInitialCondition(std::function<void(real, real, real, real &, real &, real &, real &)> initialCondition);
     std::function<void(real, real, real, real &, real &, real &, real &)> &getInitialCondition();
 
-    std::vector<std::shared_ptr<LBMSimulationParameter>> parH;
-    std::vector<std::shared_ptr<LBMSimulationParameter>> parD;
+    std::vector<std::shared_ptr<LBMSimulationParameter>> parH = std::vector<std::shared_ptr<LBMSimulationParameter>>(1);
+    std::vector<std::shared_ptr<LBMSimulationParameter>> parD = std::vector<std::shared_ptr<LBMSimulationParameter>>(1);
 private:
     void readConfigData(const vf::basics::ConfigurationFile &configData);
-    void initLBMSimulationParameter();
 
     bool compOn { false };
     bool diffOn { false };