From 1765ca296fc3de790f6a2fac05255df8f96753c2 Mon Sep 17 00:00:00 2001 From: "LEGOLAS\\lenz" <lenz@irmb.tu-bs.de> Date: Wed, 17 Oct 2018 15:26:27 +0200 Subject: [PATCH] restructures the main, in order to switch test cases easier --- targets/apps/HULC/main.cpp | 628 ++++++++++++------------------------- 1 file changed, 205 insertions(+), 423 deletions(-) diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp index f4e8a50c5..c958404ce 100644 --- a/targets/apps/HULC/main.cpp +++ b/targets/apps/HULC/main.cpp @@ -289,495 +289,277 @@ void multipleLevel(const std::string& configPath) if(useGridGenerator){ - ////////////////////////////////////////////////////////////////////////// - // DrivAer - ////////////////////////////////////////////////////////////////////////// - - //real dx = 0.2; - //real vx = 0.05; - - //TriangularMesh* DrivAerSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DrivAer_Fastback_Coarse.stl"); - ////TriangularMesh* triangularMesh = TriangularMesh::make("M:/TestGridGeneration/STL/DrivAer_NoSTLGroups.stl"); - ////TriangularMesh* triangularMesh = TriangularMesh::make("M:/TestGridGeneration/STL/DrivAer_Coarse.stl"); - - //TriangularMesh* DrivAerRefBoxSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DrivAer_REF_BOX_Adrea.stl"); - - //real z0 = 0.318+0.5*dx; - - //gridBuilder->addCoarseGrid(- 5.0, -5.0, 0.0 - z0, - // 15.0, 5.0, 5.0 - z0, dx); // DrivAer - - ////Object* floorBox = new Cuboid( -0.3, -1, -1, 4.0, 1, 0.2 ); - ////Object* wakeBox = new Cuboid( 3.5, -1, -1, 5.5, 1, 0.8 ); - - ////Conglomerate* refRegion = new Conglomerate(); - - ////refRegion->add(floorBox); - ////refRegion->add(wakeBox); - ////refRegion->add(DrivAerRefBoxSTL); - - //gridBuilder->setNumberOfLayers(4,8); - //gridBuilder->addGrid(DrivAerRefBoxSTL, 3); - // - ////gridBuilder->setNumberOfLayers(10,8); - ////gridBuilder->addGrid(DrivAerSTL, 5); - - //gridBuilder->addGeometry(DrivAerSTL); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // DLC - Golf - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //real dx = 5.0/30.0;//0.2; - //real vx = 0.05; - - //real z0 = 0.265; - - //std::vector<uint> ignorePatches = { 152, 153, 154 }; - - ////TriangularMesh* VW370_SERIE_STL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/VW370_SERIE.stl", ignorePatches); - - ////TriangularMesh* DLC_RefBox = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox.stl"); - - //////TriangularMesh* DLC_RefBox_1 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_4m.stl"); - //////TriangularMesh* DLC_RefBox_2 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_3m.stl"); - //////TriangularMesh* DLC_RefBox_3 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_2m.stl"); - ////TriangularMesh* DLC_RefBox_4 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_1m.stl"); - - //TriangularMesh* VW370_SERIE_STL = TriangularMesh::make("stl/VW370_SERIE.stl", ignorePatches); - //TriangularMesh* DLC_RefBox = TriangularMesh::make("stl/DLC_RefBox.lnx.stl"); - //TriangularMesh* DLC_RefBox_4 = TriangularMesh::make("stl/DLC_RefBox_withWake/DLC_RefBox_withWake_1m.lnx.stl"); - - //gridBuilder->addCoarseGrid(- 5.0, -5.0, 0.0 - z0, - // 15.0, 5.0, 5.0 - z0, dx); - - //gridBuilder->setNumberOfLayers(10,8); - ////gridBuilder->addGrid(DLC_RefBox_1, 1); - ////gridBuilder->addGrid(DLC_RefBox_2, 2); - ////gridBuilder->addGrid(DLC_RefBox_3, 3); - ////gridBuilder->addGrid(DLC_RefBox_4, 4); - - //gridBuilder->addGrid(DLC_RefBox_4, 4); - // - //Conglomerate* refinement = new Conglomerate(); - //refinement->add(DLC_RefBox); - //refinement->add(VW370_SERIE_STL); - - //gridBuilder->setNumberOfLayers(10,8); - //gridBuilder->addGrid(refinement, 5); - - //gridBuilder->addGeometry(VW370_SERIE_STL); - - //gridBuilder->setPeriodicBoundaryCondition(false, false, false); - - //gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Wall Mounted Cube - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - // real dx = 0.2; - //real vx = 0.02; - - //TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/Box_2.00.stl"); - //gridBuilder->addCoarseGrid(-5, -5, -1-dx/2.0, 15, 5, 5-dx/2.0, dx); - //gridBuilder->addGrid(new Cuboid(-3, -2, -2, 5, 2, 2), 1); - //gridBuilder->addGeometry(triangularMesh); + enum testCase{ + DrivAer, + DLC, + MultiGPU + }; + int testcase = DLC; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing layer refinement + if( testcase == DrivAer ) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + { + real dx = 0.2; + real vx = 0.05; - //real dx = 0.125; - //real vx = 0.02; - - ////TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/Box_2.00.stl"); - //TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/STL_Group_Test.stl"); + TriangularMesh* DrivAerSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DrivAer_Fastback_Coarse.stl"); + //TriangularMesh* triangularMesh = TriangularMesh::make("M:/TestGridGeneration/STL/DrivAer_NoSTLGroups.stl"); + //TriangularMesh* triangularMesh = TriangularMesh::make("M:/TestGridGeneration/STL/DrivAer_Coarse.stl"); - //gridBuilder->addCoarseGrid(-4, -4, -4, - // 12, 4, 4, dx); + TriangularMesh* DrivAerRefBoxSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DrivAer_REF_BOX_Adrea.stl"); - //gridBuilder->setNumberOfLayers(15, 8); // this must come before the grids are added!!! + real z0 = 0.318+0.5*dx; - //gridBuilder->addGrid(triangularMesh, 2); + gridBuilder->addCoarseGrid(- 5.0, -5.0, 0.0 - z0, + 15.0, 5.0, 5.0 - z0, dx); // DrivAer - ////gridBuilder->addGrid( new Sphere( 0, 0, 0, 0.0005 ), 12 ); - ////gridBuilder->addGrid( new Cuboid( -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 ), 3 ); + //Object* floorBox = new Cuboid( -0.3, -1, -1, 4.0, 1, 0.2 ); + //Object* wakeBox = new Cuboid( 3.5, -1, -1, 5.5, 1, 0.8 ); - //gridBuilder->addGeometry(triangularMesh); + //Conglomerate* refRegion = new Conglomerate(); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing NeedleCells - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //refRegion->add(floorBox); + //refRegion->add(wakeBox); + //refRegion->add(DrivAerRefBoxSTL); - //real dx = 0.005; - //real vx = 0.02; + gridBuilder->setNumberOfLayers(10,8); + gridBuilder->addGrid(DrivAerRefBoxSTL, 2); + + //gridBuilder->setNumberOfLayers(10,8); + //gridBuilder->addGrid(DrivAerSTL, 5); - ////TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/NeedleCells2.stl"); - //TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/NeedleCellsThinWalls.stl"); - // - //gridBuilder->addCoarseGrid(-0.5-0.5*dx, -0.3, -0.3, - // 1.0-0.5*dx, 0.3, 0.3, dx); + gridBuilder->addGeometry(DrivAerSTL); - //gridBuilder->addGeometry( triangularMesh ); + gridBuilder->setPeriodicBoundaryCondition(false, false, false); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing Thin Wall - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - //real dx = 0.0125; - //real vx = 0.05; + ////////////////////////////////////////////////////////////////////////// - //TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/ThinWallTest2.stl"); + gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0); - //gridBuilder->addCoarseGrid(-2, -1.5, -0.5, 4, 1.5, 0.5, dx); + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - //gridBuilder->addGeometry( triangularMesh ); + gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + + ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing Thin Box - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); - //real dx = 0.0125/4; - //real vx = 0.05; + gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, 4, 0.0075, -2.0, 0.0, + 0.0075, 2.0, 0.0, -vx, 0.318); + gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, 3, 2.793 , -2.0, 0.0, + 2.793 , 2.0, 0.0, -vx, 0.318); - //TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/ThinWallBox_rotated.stl"); + ////////////////////////////////////////////////////////////////////////// - //gridBuilder->addCoarseGrid(-0.4-0.5*dx, -0.4-0.5*dx, -0.4-0.5*dx, - // 1.0-0.5*dx, 0.4-0.5*dx, 0.4-0.5*dx, dx); + //SimulationFileWriter::write("D:/GRIDGENERATION/files/", gridBuilder, FILEFORMAT::ASCII); + SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/", gridBuilder, FILEFORMAT::ASCII); + //SimulationFileWriter::write("grid/", gridBuilder, FILEFORMAT::ASCII); - //gridBuilder->addGeometry( triangularMesh ); + gridGenerator = GridGenerator::make(gridBuilder, para); + } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing Paper Plane + if( testcase == DLC ) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + { + real dx = 5.0/30.0;//0.2; + real vx = 0.05; - //real dx = 0.005; - //real vx = 0.05; - - //TriangularMesh* paperPlaneSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/PaperPlane_1.stl"); + real z0 = 0.265; - //TriangularMesh* paperPlaneRefSTL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/PaperPlane_1_ref.stl"); - // - //Object* wakeBox = new Cuboid( 0.3, -0.11, -0.06, 0.6, 0.11, -0.02 ); + std::vector<uint> ignorePatches = { 152, 153, 154 }; - //Conglomerate* paperPlaneRefSTL_coarse = new Conglomerate(); - //paperPlaneRefSTL_coarse->add(wakeBox); - //paperPlaneRefSTL_coarse->add(paperPlaneRefSTL); + TriangularMesh* VW370_SERIE_STL = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/VW370_SERIE.stl", ignorePatches); - //// x y z x y z - //gridBuilder->addCoarseGrid(-0.1, -0.2, -0.1, 1.0, 0.2, 0.1, dx); + TriangularMesh* DLC_RefBox = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox.stl"); - //gridBuilder->setNumberOfLayers(10,8); + //TriangularMesh* DLC_RefBox_1 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_4m.stl"); + //TriangularMesh* DLC_RefBox_2 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_3m.stl"); + //TriangularMesh* DLC_RefBox_3 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_2m.stl"); + TriangularMesh* DLC_RefBox_4 = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/DLC_RefBox_withWake/DLC_RefBox_withWake_1m.stl"); - //gridBuilder->addGrid(paperPlaneRefSTL_coarse, 2); + //TriangularMesh* VW370_SERIE_STL = TriangularMesh::make("stl/VW370_SERIE.stl", ignorePatches); + //TriangularMesh* DLC_RefBox = TriangularMesh::make("stl/DLC_RefBox.lnx.stl"); + //TriangularMesh* DLC_RefBox_4 = TriangularMesh::make("stl/DLC_RefBox_withWake/DLC_RefBox_withWake_1m.lnx.stl"); - //gridBuilder->setNumberOfLayers(2,8); + gridBuilder->addCoarseGrid(- 5.0, -5.0, 0.0 - z0, + 15.0, 5.0, 5.0 - z0, dx); - //gridBuilder->addGrid(paperPlaneRefSTL, 3); + gridBuilder->setNumberOfLayers(10,8); + //gridBuilder->addGrid(DLC_RefBox_1, 1); + //gridBuilder->addGrid(DLC_RefBox_2, 2); + //gridBuilder->addGrid(DLC_RefBox_3, 3); + //gridBuilder->addGrid(DLC_RefBox_4, 4); - //gridBuilder->addGeometry( paperPlaneSTL ); + gridBuilder->addGrid(DLC_RefBox_4, 2); + + //Conglomerate* refinement = new Conglomerate(); + //refinement->add(DLC_RefBox); + //refinement->add(VW370_SERIE_STL); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing Periodic Cube - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //gridBuilder->setNumberOfLayers(10,8); + //gridBuilder->addGrid(refinement, 5); - //real dx = 1.0 / 300.0; - //real vx = 0.05; + gridBuilder->addGeometry(VW370_SERIE_STL); - //gridBuilder->addCoarseGrid(-0.5 - 0.5*dx, -0.5 - 0.5*dx, -0.5 - 0.5*dx, - // 0.5 + 0.5*dx, 0.5 + 0.5*dx, 0.5 + 0.5*dx, dx); + gridBuilder->setPeriodicBoundaryCondition(false, false, false); - //gridBuilder->addGrid(new Cuboid( -0.2, -0.6, -0.2, 0.2, 0.6, 0.2 ), 1); + gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Testing Multi GPU grids - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// - const uint generatePart = 0; - - std::ofstream logFile2; - - if( generatePart == 0 ) - logFile2.open( "C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/gridGeneratorLog.txt" ); - - if( generatePart == 1 ) - logFile2.open( "C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/gridGeneratorLog.txt" ); + gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0); - logging::Logger::addStream(&logFile2); + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - real dx = 1.0 / 10.0; - real vx = 0.01; + gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + + ////////////////////////////////////////////////////////////////////////// - TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/ShpereNotOptimal.stl"); - //TriangularMesh* triangularMesh = TriangularMesh::make("stl/ShpereNotOptimal.lnx.stl"); + SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); - // all - //gridBuilder->addCoarseGrid(-2, -2, -2, - // 4, 2, 2, dx); + real wheelsFrontX = -0.081; + real wheelsRearX = 2.5485; - real overlap = 10.0 * dx; + real wheelsFrontZ = 0.0515; + real wheelsRearZ = 0.0585; - if( generatePart == 0 ) - gridBuilder->addCoarseGrid(-2.0 , -2.0, -2.0, - 0.5 + overlap, 2.0, 2.0, dx); + real wheelsRadius = 0.318; - if( generatePart == 1 ) - gridBuilder->addCoarseGrid( 0.5 - overlap, -2.0, -2.0, - 4.0 , 2.0, 2.0, dx); + std::vector<uint> frontWheelPatches = { 71, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 159 }; + std::vector<uint> rearWheelPatches = { 82, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 160 }; + for( uint patch : frontWheelPatches ){ + gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, patch, wheelsFrontX, -2.0, wheelsFrontZ, + wheelsFrontX, 2.0, wheelsFrontZ, -vx, wheelsRadius); + } - gridBuilder->setNumberOfLayers(10,8); - gridBuilder->addGrid(triangularMesh, 1); + for( uint patch : rearWheelPatches ){ + gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, patch, wheelsRearX , -2.0, wheelsRearZ , + wheelsRearX , 2.0, wheelsRearZ , -vx, wheelsRadius); + } - gridBuilder->addGeometry(triangularMesh); - - if( generatePart == 0 ) - gridBuilder->setSubDomainBox( std::make_shared<BoundingBox>( -2.0, 0.5, - -2.0, 2.0, - -2.0, 2.0 ) ); - - if( generatePart == 1 ) - gridBuilder->setSubDomainBox( std::make_shared<BoundingBox>( 0.5, 4.0, - -2.0, 2.0, - -2.0, 2.0 ) ); + ////////////////////////////////////////////////////////////////////////// - gridBuilder->setPeriodicBoundaryCondition(false, false, false); + //SimulationFileWriter::write("D:/GRIDGENERATION/files/", gridBuilder, FILEFORMAT::ASCII); + SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/", gridBuilder, FILEFORMAT::ASCII); + //SimulationFileWriter::write("grid/", gridBuilder, FILEFORMAT::ASCII); - gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - - if( generatePart == 0 ){ - gridBuilder->findCommunicationIndices(CommunicationDirections::PX); - gridBuilder->setCommunicationProcess(CommunicationDirections::PX, 1); - } - - if( generatePart == 1 ){ - gridBuilder->findCommunicationIndices(CommunicationDirections::MX); - gridBuilder->setCommunicationProcess(CommunicationDirections::MX, 0); + gridGenerator = GridGenerator::make(gridBuilder, para); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // other tests + if( testcase == MultiGPU ) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //TriangleOffsetSurfaceGeneration::createOffsetTriangularMesh(triangularMesh, 5); - - //TriangularMesh* sphere = TriangularMesh::make("D:/GRIDGENERATION/STL/GTI.stl", DiscretizationMethod::RAYCASTING); - //TransformatorImp trans(1.0, Vertex(5.5, 1, 12)); - //trans.transformWorldToGrid(*sphere); - //STLWriter::writeSTL(sphere->triangleVec, "D:/GRIDGENERATION/STL/GTI2.stl", false); - - //real size = 0.02; - //gridBuilder->addGrid(new Sphere( 0, 0, 0, 2.5), 1); - //gridBuilder->addGrid(new VerticalCylinder( 0, 0, 0, 3, 60), 2); - //gridBuilder->addGrid(new Sphere(0, 0, 19.5, 1), 6);//until level 7 works - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////////// - //BCs - //gridBuilder->setVelocityBoundaryCondition(SideType::PX, 0.0, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MX, 0.0, 0.0, 0.0); - - gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0); - - //gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - - if (generatePart == 0) { - gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - } - if (generatePart == 1) { - gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - } - - gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - - //////////////////////////////////////////////////////////////////////////// - - //gridBuilder->setNoSlipBoundaryCondition(SideType::MY); - //gridBuilder->setNoSlipBoundaryCondition(SideType::PY); - // gridBuilder->setNoSlipBoundaryCondition(SideType::MZ); - // gridBuilder->setNoSlipBoundaryCondition(SideType::PZ); - { - //gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setVelocityForPatch(0, vx, 0.0, 0.0); - - SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); - - // Walze: - //gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch(grid, 1, 0.0, -1.0, 0.0, - // 0.0, 1.0, 0.0, -5.0 * vx, 1.0); - - // DrivAer - //gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, 4, 0.0075, -2.0, 0.0, - // 0.0075, 2.0, 0.0, -vx, 0.318); - //gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, 3, 2.793 , -2.0, 0.0, - // 2.793 , 2.0, 0.0, -vx, 0.318); - - //real wheelsFrontX = -0.081; - //real wheelsRearX = 2.5485; - - //real wheelsFrontZ = 0.0515; - //real wheelsRearZ = 0.0585; - - //real wheelsRadius = 0.318; - - //std::vector<uint> frontWheelPatches = { 71, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 159 }; - //std::vector<uint> rearWheelPatches = { 82, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 160 }; - - //for( uint patch : frontWheelPatches ){ - // gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, patch, wheelsFrontX, -2.0, wheelsFrontZ, - // wheelsFrontX, 2.0, wheelsFrontZ, -vx, wheelsRadius); - //} + const uint generatePart = 1; + + std::ofstream logFile2; + + if( generatePart == 0 ) + logFile2.open( "C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/gridGeneratorLog.txt" ); + + if( generatePart == 1 ) + logFile2.open( "C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/gridGeneratorLog.txt" ); + + logging::Logger::addStream(&logFile2); + + real dx = 1.0 / 40.0; + real vx = 0.05; + + TriangularMesh* triangularMesh = TriangularMesh::make("C:/Users/lenz/Desktop/Work/gridGenerator/stl/ShpereNotOptimal.stl"); + //TriangularMesh* triangularMesh = TriangularMesh::make("stl/ShpereNotOptimal.lnx.stl"); + + // all + //gridBuilder->addCoarseGrid(-2, -2, -2, + // 4, 2, 2, dx); + + real overlap = 10.0 * dx; + + if( generatePart == 0 ) + gridBuilder->addCoarseGrid(-2.0 , -2.0, -2.0, + 0.5 + overlap, 2.0, 2.0, dx); + + if( generatePart == 1 ) + gridBuilder->addCoarseGrid( 0.5 - overlap, -2.0, -2.0, + 4.0 , 2.0, 2.0, dx); + + + gridBuilder->setNumberOfLayers(10,8); + gridBuilder->addGrid(triangularMesh, 1); + + gridBuilder->addGeometry(triangularMesh); + + if( generatePart == 0 ) + gridBuilder->setSubDomainBox( std::make_shared<BoundingBox>( -2.0, 0.5, + -2.0, 2.0, + -2.0, 2.0 ) ); + + if( generatePart == 1 ) + gridBuilder->setSubDomainBox( std::make_shared<BoundingBox>( 0.5, 4.0, + -2.0, 2.0, + -2.0, 2.0 ) ); + + gridBuilder->setPeriodicBoundaryCondition(false, false, false); + + gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! + + if( generatePart == 0 ){ + gridBuilder->findCommunicationIndices(CommunicationDirections::PX); + gridBuilder->setCommunicationProcess(CommunicationDirections::PX, 1); + } + + if( generatePart == 1 ){ + gridBuilder->findCommunicationIndices(CommunicationDirections::MX); + gridBuilder->setCommunicationProcess(CommunicationDirections::MX, 0); + } - //for( uint patch : rearWheelPatches ){ - // gridBuilder->getGeometryBoundaryCondition(gridBuilder->getNumberOfLevels() - 1)->setTangentialVelocityForPatch( grid, patch, wheelsRearX , -2.0, wheelsRearZ , - // wheelsRearX , 2.0, wheelsRearZ , -vx, wheelsRadius); - //} + ////////////////////////////////////////////////////////////////////////// - } + gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PX, 0.001, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MY, 0.001, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.001, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MZ, 0.001, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PZ, 0.001, 0.0, 0.0); + if (generatePart == 0) { + gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); + } + if (generatePart == 1) { + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + ////////////////////////////////////////////////////////////////////////// - if (generatePart == 0) { - gridBuilder->writeGridsToVtk("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/Test_"); - gridBuilder->writeArrows ("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/Test_Arrow"); - } - if (generatePart == 1) { - gridBuilder->writeGridsToVtk("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/Test_"); - gridBuilder->writeArrows ("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/Test_Arrow"); - } - - //gridBuilder->writeGridsToVtk("M:/TestGridGeneration/results/ConcaveTest_"); - - //gridBuilder->writeGridsToVtk("C:/Users/lenz/Desktop/Work/gridGenerator/grid/Test_"); - //gridBuilder->writeArrows("C:/Users/lenz/Desktop/Work/gridGenerator/gridMultiGPU_Part_2/Test_Arrow"); - - //gridBuilder->writeGridsToVtk("grid/Test_"); - //gridBuilder->writeArrows("grid/Test_Arrow"); - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //{ - // SPtr<Grid> grid = gridBuilder->getGrid(2); - - // uint counter = 0; - // for (uint gridIdx = 0; gridIdx < grid->getSize(); gridIdx++) { - - // if (grid->getFieldEntry(gridIdx) == BC_GEOMETRY) { - // real x, y, z; - // grid->transIndexToCoords(gridIdx, x, y, z); - // if (fabs(z) > dx) continue; - // std::cout << x << " " << y << " " << z << std::endl; - // for (uint fIdx = 0; fIdx < 27; fIdx++) { - // if (!vf::Math::equal(grid->getDistribution()[fIdx * grid->getSize() + gridIdx], 0.0)) { - // std::cout << fIdx << "\t" << grid->getDistribution()[fIdx * grid->getSize() + gridIdx] << std::endl; - // } - // } - // counter++; - // if (counter > 10) break; - // } - // } - //} - - //debug information - //{ - // uint level = 0; - - // SPtr<Grid> grid = gridBuilder->getGrid(level); - - // real* xCoords = new real [ grid->getSparseSize() ]; - // real* yCoords = new real [ grid->getSparseSize() ]; - // real* zCoords = new real [ grid->getSparseSize() ]; - // uint* xNeighbor = new uint [ grid->getSparseSize() ]; - // uint* yNeighbor = new uint [ grid->getSparseSize() ]; - // uint* zNeighbor = new uint [ grid->getSparseSize() ]; - // uint* geo = new uint [ grid->getSparseSize() ]; - - // gridBuilder->getNodeValues(xCoords, yCoords, zCoords, xNeighbor, yNeighbor, zNeighbor, geo, level); - - // uint counter = 0; - // for (uint gridIdx = 0; gridIdx < grid->getSize(); gridIdx++) { - - // //////////////////////////////////////////////////////////////////////////// - // if (grid->getFieldEntry(gridIdx) != FLUID_CFC) continue; - - // real x, y, z; - // grid->transIndexToCoords(gridIdx, x, y, z); - // - // if(level == 0) if ( !vf::Math::equal(y, 4.5 ) && !vf::Math::equal(y, -4.5)) continue; - // if(level == 1) if ( !vf::Math::equal(y, 4.625 ) ) continue; - // if(level == 2) if ( !vf::Math::equal(y, 4.8125/*4.6875*/) ) continue; - - // if( grid->getSparseIndex( gridIdx ) == -1 ) continue; - - // std::cout << int( grid->getFieldEntry(gridIdx) ) << " "; - - // std::cout << grid->getSparseIndex( gridIdx ) << " (" << x << " " << y << " " << z << ") --> "; - - // uint neighborIndex = grid->getNeighborsZ()[ gridIdx ]; - - // std::cout << neighborIndex << " (" << xCoords[neighborIndex + 1] << " " - // << yCoords[neighborIndex + 1] << " " - // << zCoords[neighborIndex + 1] << ")" << std::endl; - - // counter++; - // ////if (counter > 1000) break; - // ////////////////////////////////////////////////////////////////////////////// - // //real x, y, z; - // //grid->transIndexToCoords(gridIdx, x, y, z); - - // ////one interesting stopper node - // //int stopperOfInterest = 17528; - // //if ((grid->getNeighborsX()[gridIdx] == stopperOfInterest) || - // // (grid->getNeighborsY()[gridIdx] == stopperOfInterest) || - // // (grid->getNeighborsZ()[gridIdx] == stopperOfInterest)) - // //{ - // // std::cout << int(grid->getFieldEntry(gridIdx)) << " "; - - // // std::cout << grid->getSparseIndex(gridIdx) << " (" << x << " " << y << " " << z << ") --> "; - - - // // std::cout << stopperOfInterest << " (" << xCoords[stopperOfInterest + 1] << " " - // // << yCoords[stopperOfInterest + 1] << " " - // // << zCoords[stopperOfInterest + 1] << ")" << std::endl; - // //} - - // //////////////////////////////////////////////////////////////////////////// - // } - //} - - //SimulationFileWriter::write("D:/GRIDGENERATION/files/", gridBuilder, FILEFORMAT::ASCII); - //SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/", gridBuilder, FILEFORMAT::ASCII); - //SimulationFileWriter::write("grid/", gridBuilder, FILEFORMAT::ASCII); - - if (generatePart == 0) - SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/", gridBuilder, FILEFORMAT::ASCII); - if (generatePart == 1) - SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/", gridBuilder, FILEFORMAT::ASCII); + if (generatePart == 0) { + gridBuilder->writeGridsToVtk("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/Test_"); + gridBuilder->writeArrows ("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/Test_Arrow"); + } + if (generatePart == 1) { + gridBuilder->writeGridsToVtk("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/Test_"); + gridBuilder->writeArrows ("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/Test_Arrow"); + } - return; + if (generatePart == 0) + SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/0/", gridBuilder, FILEFORMAT::ASCII); + if (generatePart == 1) + SimulationFileWriter::write("C:/Users/lenz/Desktop/Work/gridGenerator/grid/1/", gridBuilder, FILEFORMAT::ASCII); - gridGenerator = GridGenerator::make(gridBuilder, para); + return; + } } else { -- GitLab