diff --git a/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu b/src/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu index eba3c309f61e777af7b2758f3ced5a60602e8670..92a01db4e8781d355393e8d27233f780d18cea35 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 7c70411005f3442328a96c78e18103706d04b74f..c24602baa4203ae533d0039f0e0b5caa29c67e4e 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 b7f67631f46c62831bb0f206bad690412979dc32..8cf446aac8246c524f0327f3d00dc29758ca26f0 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 44ecdea627cc366e29d66dae073d9192af3f1e07..58599214293586fcc06ebac5599b5e6e0f1e7da0 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 ec4055100a81612516caddc2bc352377d1e7000d..36e0f3328ce7d690d9d361c8a0d5384ebaf536ba 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);