From 3d930878cd8b0ddbe363d7f2a39bc2cd8aa9c100 Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters@irmb.tu-bs.de> Date: Wed, 9 May 2018 15:08:03 +0200 Subject: [PATCH] - refactoring --- .../TriangularMesh/TriangularMesh.cu | 8 +------- .../geometries/TriangularMesh/TriangularMesh.h | 5 +---- .../grid/GridBuilder/MultipleGridBuilder.cpp | 13 +++++++++++++ .../grid/GridBuilder/MultipleGridBuilder.h | 2 ++ targets/apps/HULC/main.cpp | 18 +++++++++++------- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu b/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu index eba3c309f..92a01db4e 100644 --- a/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu +++ b/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu @@ -12,10 +12,9 @@ #include "io/STLReaderWriter/STLWriter.h" -TriangularMesh* TriangularMesh::make(const std::string& fileName, DiscretizationMethod discretizationMethod) +TriangularMesh* TriangularMesh::make(const std::string& fileName) { TriangularMesh* triangularMesh = new TriangularMesh(fileName); - triangularMesh->discretizationMethod = discretizationMethod; return triangularMesh; } @@ -110,11 +109,6 @@ HOST bool TriangularMesh::operator==(const TriangularMesh &geometry) const } -HOST DiscretizationMethod TriangularMesh::getDiscretizationMethod() const -{ - return this->discretizationMethod; -} - HOSTDEVICE GbTriFaceMesh3D* TriangularMesh::getGbTriFaceMesh3D() const { std::vector<GbTriFaceMesh3D::Vertex> *gbVertices = new std::vector<GbTriFaceMesh3D::Vertex>(this->triangleVec.size() * 3); diff --git a/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.h b/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.h index 7c7041100..c24602baa 100644 --- a/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.h +++ b/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.h @@ -25,7 +25,7 @@ class TriangularMesh : public Object { public: - VF_PUBLIC static TriangularMesh* make(const std::string& fileName, DiscretizationMethod discretizationMethod); + VF_PUBLIC static TriangularMesh* make(const std::string& fileName); VF_PUBLIC TriangularMesh(); VF_PUBLIC TriangularMesh(const std::string& inputPath); VF_PUBLIC TriangularMesh(const std::string& inputPath, const BoundingBox &box); @@ -46,7 +46,6 @@ public: VF_PUBLIC void findNeighbors(); - HOST VF_PUBLIC DiscretizationMethod getDiscretizationMethod() const; HOSTDEVICE VF_PUBLIC GbTriFaceMesh3D* getGbTriFaceMesh3D() const; private: @@ -56,8 +55,6 @@ private: static std::vector<Vertex> getAverrageNormalsPerVertex(std::vector<std::vector<Triangle> > trianglesPerVertex); static void eliminateTriangleswithIdenticialNormal(std::vector<Triangle> &triangles); - DiscretizationMethod discretizationMethod; - public: HOSTDEVICE Object* clone() const override; double getX1Centroid() override { throw "Not implemented in TriangularMesh"; } diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp index b7f67631f..8cf446aac 100644 --- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp +++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp @@ -5,6 +5,7 @@ #include <VirtualFluidsBasics/utilities/logger/Logger.h> #include "io/STLReaderWriter/STLWriter.h" +#include "io/GridVTKWriter/GridVTKWriter.h" MultipleGridBuilder::MultipleGridBuilder(SPtr<GridFactory> gridFactory, Device device, const std::string &d3qxx) : LevelGridBuilder(device, d3qxx), gridFactory(gridFactory) @@ -272,3 +273,15 @@ void MultipleGridBuilder::emitGridIsNotInCoarseGridWarning() { *logging::out << logging::Logger::WARNING << "Grid lies not inside of coarse grid. Actual Grid is not added.\n"; } + +void MultipleGridBuilder::writeGridsToVtk(const std::string& path) const +{ + for(uint level = 0; level < grids.size(); level++) + { + std::stringstream ss; + ss << path << level << ".vtk"; + + GridVTKWriter::writeGridToVTKXML(grids[level], ss.str()); + GridVTKWriter::writeSparseGridToVTK(grids[level], ss.str()); + } +} \ No newline at end of file diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h index 44ecdea62..585992142 100644 --- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h +++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h @@ -43,6 +43,8 @@ public: VF_PUBLIC std::vector<SPtr<Grid> > getGrids() const; VF_PUBLIC void buildGrids(); + VF_PUBLIC void writeGridsToVtk(const std::string& path) const; + private: void addGridToList(SPtr<Grid> grid); real calculateDelta(uint level) const; diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp index ec4055100..36e0f3328 100644 --- a/targets/apps/HULC/main.cpp +++ b/targets/apps/HULC/main.cpp @@ -249,7 +249,7 @@ void multipleLevel(const std::string& configPath) auto gridFactory = SPtr<GridFactory>(new GridFactory()); gridFactory->setGridStrategy(SPtr<GridStrategy>(new GridCpuStrategy())); gridFactory->setGrid("grid"); - gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT); + gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::RAYCASTING); //auto gridBuilderlevel = LevelGridBuilder::makeShared(Device::CPU, "D3Q27"); auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); @@ -259,13 +259,18 @@ void multipleLevel(const std::string& configPath) //conglomerate->subtract(new Sphere(30, 20, 20, 4)); //gridBuilder->addGrid(conglomerate, 2); + //gridBuilder->addCoarseGrid(0, 0, 0, 40, 40, 40, 1.0); + //Object* cuboid = new Cuboid(15, 15, 15, 20, 20, 20); + //gridBuilder->addGrid(cuboid, 2); // gridBuilder->addCoarseGrid(0.0, 0.0, 0.0, 14, 10, 20, 0.25); //TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/quadarBinaer.stl", DiscretizationMethod::POINT_IN_OBJECT); gridBuilder->addCoarseGrid(-12, -10, -10, 55, 24, 25, 0.5); - TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/input/local_input/bruecke.stl", DiscretizationMethod::RAYCASTING); + TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/input/local_input/bruecke.stl"); + //gridBuilder->addGrid(triangularMesh, 2); + gridBuilder->addGeometry(triangularMesh); //TriangleOffsetSurfaceGeneration::createOffsetTriangularMesh(triangularMesh, 5); @@ -276,8 +281,7 @@ void multipleLevel(const std::string& configPath) //STLWriter::writeSTL(sphere->triangleVec, "D:/GRIDGENERATION/STL/GTI2.stl", false); //gridBuilder->addGrid(new Sphere(20, 20, 20, 8)); - //gridBuilder->addGrid(triangularMesh, 2); - gridBuilder->addGeometry(triangularMesh, 1); + //gridBuilder->addGeometry(triangularMesh, 1); //gridBuilder->addFineGrid(new Cuboid(15, 15, 15, 25, 25, 25), 1); //gridBuilder->addFineGrid(new Cuboid(17, 17, 17, 23, 23, 23), 2); @@ -291,9 +295,9 @@ void multipleLevel(const std::string& configPath) gridBuilder->buildGrids(); - gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestSphere_level_0.vtk", 0); - gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestSphere_level_1.vtk", 1); - //gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestSphere_level_2", 2); + gridBuilder->writeGridsToVtk("D:/GRIDGENERATION/"); + + //gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestSphere_level_2.vtk", 2); //gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestCuboid_level_0", 0); //gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTestCuboid_level_1", 1); -- GitLab