diff --git a/apps/gpu/LBM/SphereRefined/SphereRefined.cpp b/apps/gpu/LBM/SphereRefined/SphereRefined.cpp
index 933dd3089b865ea0396f9f6c1ae61fbf54584613..722028eeecc02a90bebebf4c828bdfd482bf2e85 100644
--- a/apps/gpu/LBM/SphereRefined/SphereRefined.cpp
+++ b/apps/gpu/LBM/SphereRefined/SphereRefined.cpp
@@ -93,14 +93,6 @@ int main()
         const uint timeStepOut = 10000;
         const uint timeStepEnd = 10000;
 
-        //////////////////////////////////////////////////////////////////////////
-        // setup gridGenerator
-        //////////////////////////////////////////////////////////////////////////
-
-        auto gridFactory = GridFactory::make();
-        gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT);
-        auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory);
-
         //////////////////////////////////////////////////////////////////////////
         // compute parameters in lattice units
         //////////////////////////////////////////////////////////////////////////
@@ -113,6 +105,7 @@ int main()
         //////////////////////////////////////////////////////////////////////////
         // create grid
         //////////////////////////////////////////////////////////////////////////
+        auto gridBuilder = std::make_shared<MultipleGridBuilder>();
 
         gridBuilder->addCoarseGrid(-1.0 * L, -0.6 * L, -0.6 * L, 
                                     2.0 * L,  0.6 * L,  0.6 * L, dx);
@@ -151,7 +144,7 @@ int main()
         para->setTimestepOut(timeStepOut);
         para->setTimestepEnd(timeStepEnd);
 
-        para->setMainKernel(vf::CollisionKernel::Compressible::CumulantK17);
+        para->setMainKernel(vf::CollisionKernel::Compressible::K17CompressibleNavierStokes);
 
         //////////////////////////////////////////////////////////////////////////
         // set boundary conditions
diff --git a/apps/gpu/LBM/TGV_3D_GridRef/TGV_3D_GridRef.cpp b/apps/gpu/LBM/TGV_3D_GridRef/TGV_3D_GridRef.cpp
index 5948c84eda664aec121625e152cdeedef0bc7f7c..d31a31140b22afee5246016b268354fa67914062 100644
--- a/apps/gpu/LBM/TGV_3D_GridRef/TGV_3D_GridRef.cpp
+++ b/apps/gpu/LBM/TGV_3D_GridRef/TGV_3D_GridRef.cpp
@@ -133,13 +133,6 @@ void multipleLevel(const std::string& configPath)
 {
     vf::gpu::Communicator& communicator = vf::gpu::MpiCommunicator::getInstance();
 
-    auto gridFactory = GridFactory::make();
-    //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::RAYCASTING);
-    gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT);
-    //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_UNDER_TRIANGLE);
-
-    auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory);
-
     vf::basics::ConfigurationFile config;
     config.load(configPath);
     SPtr<Parameter> para = std::make_shared<Parameter>(communicator.getNumberOfProcess(), communicator.getPID(), &config);
@@ -162,6 +155,7 @@ void multipleLevel(const std::string& configPath)
     VF_LOG_INFO("viscosity = {}", viscosity);
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    auto gridBuilder = std::make_shared<MultipleGridBuilder>();
 
 	real dx = 2.0 * PI / real(nx);
 
diff --git a/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp b/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp
index de838d3397042efc34bb74568808ab63aa0ab179..1df7d5d1e586a8f003ce1693a3af479734948744 100644
--- a/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp
+++ b/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp
@@ -131,10 +131,6 @@ void multipleLevel(const std::string& configPath)
 {
     vf::gpu::Communicator& communicator = vf::gpu::MpiCommunicator::getInstance();
 
-    auto gridFactory = GridFactory::make();
-    gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT);
-    auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory);
-
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -191,6 +187,7 @@ void multipleLevel(const std::string& configPath)
     // bool reset_diff = false;
     bool reset_flow = false;
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    auto gridBuilder = std::make_shared<MultipleGridBuilder>();
 
     gridBuilder->addCoarseGrid(x_min, y_min, z_min,
                                x_max, y_max, z_max, dx);