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