From 4bc6074fb71a895746c0dddbc096c26b39c16b70 Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters@irmb.tu-bs.de> Date: Tue, 15 May 2018 09:58:18 +0200 Subject: [PATCH] - refactor gridprovider --- .../DataStructureInitializer/GridProvider.cpp | 9 ----- .../DataStructureInitializer/GridProvider.h | 3 -- .../GridReaderFiles/GridReader.cpp | 33 +++++++++++++++++-- .../GridReaderFiles/GridReader.h | 12 +++++-- .../GridReaderGenerator/GridGenerator.cpp | 6 ++++ .../GridReaderGenerator/GridGenerator.h | 3 ++ targets/apps/HULC/main.cpp | 10 +++--- 7 files changed, 55 insertions(+), 21 deletions(-) diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp index 3d2eae79f..6fdb4be62 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp @@ -9,15 +9,6 @@ #include <GPU/CudaMemoryManager.h> -std::shared_ptr<GridProvider> GridProvider::makeGridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para) -{ - return std::shared_ptr<GridProvider>(new GridGenerator(builder, para)); -} - -std::shared_ptr<GridProvider> GridProvider::makeGridReader(bool readBinaryFiles, std::shared_ptr<Parameter> para) -{ - return std::shared_ptr<GridProvider>(new GridReader(readBinaryFiles, para)); -} void GridProvider::setNumberOfNodes(const int numberOfNodes, const int level) const { diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h index 579a43442..ad942f97a 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h @@ -14,9 +14,6 @@ class CudaMemoryManager; class VF_PUBLIC GridProvider { public: - static std::shared_ptr<GridProvider> makeGridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para); - static std::shared_ptr<GridProvider> makeGridReader(bool readBinaryFiles, std::shared_ptr<Parameter> para); - virtual void allocArrays_CoordNeighborGeo() = 0; virtual void allocArrays_BoundaryValues() = 0; virtual void allocArrays_BoundaryQs() = 0; diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index fc5a10bd2..3eb2f8ac2 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -11,6 +11,11 @@ #include <GPU/CudaMemoryManager.h> #include "OffsetScale.h" +std::shared_ptr<GridProvider> GridReader::make(FileFormat format, std::shared_ptr<Parameter> para) +{ + return std::make_shared<GridReader>(format, para); +} + GridReader::GridReader(bool binaer, std::shared_ptr<Parameter> para) { this->para = para; @@ -29,16 +34,38 @@ GridReader::GridReader(bool binaer, std::shared_ptr<Parameter> para) channelDirections[5] = "bottom"; } -GridReader::~GridReader() +GridReader::GridReader(FileFormat format, std::shared_ptr<Parameter> para) { + this->para = para; + this->cudaMemoryManager = CudaMemoryManager::make(para); + this->format = format; + switch(format) + { + case FileFormat::ASCII: + binaer = false; break; + case FileFormat::BINARY: + binaer = true; break; + } + + channelDirections.resize(6); + channelBoundaryConditions.resize(6); + BC_Values.resize(6); + + channelDirections[0] = "inlet"; + channelDirections[1] = "outlet"; + channelDirections[2] = "front"; + channelDirections[3] = "back"; + channelDirections[4] = "top"; + channelDirections[5] = "bottom"; } -bool GridReader::getBinaer() +GridReader::~GridReader() { - return binaer; + } + void rearrangeGeometry(Parameter* para, int lev) { for (uint index = 0; index < para->getParH(lev)->size_Mat_SP; index++) diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h index 1a446228d..5667a0ca5 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h @@ -16,19 +16,28 @@ class BoundaryValues; class BoundaryQs; class CoordNeighborGeoV; +enum class FileFormat +{ + BINARY, ASCII +}; + class VF_PUBLIC GridReader : public GridProvider { private: bool binaer; + FileFormat format; std::vector<std::string> channelDirections; std::vector<std::string> channelBoundaryConditions; std::shared_ptr<CoordNeighborGeoV> neighX, neighY, neighZ, neighWSB; std::vector<std::shared_ptr<BoundaryValues> > BC_Values; public: - GridReader(bool binaer, std::shared_ptr<Parameter> para); + static std::shared_ptr<GridProvider> make(FileFormat format, std::shared_ptr<Parameter> para); + + GridReader(bool binaer, std::shared_ptr<Parameter> para); + GridReader(FileFormat format, std::shared_ptr<Parameter> para); ~GridReader(); void allocArrays_CoordNeighborGeo()override; void allocArrays_BoundaryValues()override; @@ -39,7 +48,6 @@ public: void setChannelBoundaryCondition(); void allocArrays_BoundaryQs()override; - bool getBinaer(); void setDimensions(); void setBoundingBox(); void initPeriodicNeigh(std::vector<std::vector<std::vector<unsigned int> > > periodV, std::vector<std::vector<unsigned int> > periodIndex, std::string way); diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index b666b99b0..3bebefabe 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -8,6 +8,12 @@ #include <iostream> #include "utilities/math/Math.h" + +std::shared_ptr<GridProvider> GridGenerator::make(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para) +{ + return std::shared_ptr<GridProvider>(new GridGenerator(builder, para)); +} + GridGenerator::GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para) { this->builder = builder; diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h index 95efb7a09..6a3df5fa4 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h @@ -22,6 +22,9 @@ private: std::shared_ptr<GridBuilder> builder; public: + VF_PUBLIC static std::shared_ptr<GridProvider> make(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para); + + VF_PUBLIC GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para); VF_PUBLIC virtual ~GridGenerator(); diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp index fef2d0ff2..b1b187215 100644 --- a/targets/apps/HULC/main.cpp +++ b/targets/apps/HULC/main.cpp @@ -34,6 +34,8 @@ #include "io/STLReaderWriter/STLWriter.h" #include "geometries/TriangularMesh/TriangularMeshStrategy.h" #include "Output/FileWriter.h" +#include "DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "DataStructureInitializer/GridReaderGenerator/GridGenerator.h" std::string getGridPath(std::shared_ptr<Parameter> para, std::string Gridpath) @@ -267,9 +269,9 @@ void multipleLevel(const std::string& configPath) //TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/quadarBinaer.stl", DiscretizationMethod::POINT_IN_OBJECT); - gridBuilder->addCoarseGrid(-12, -10, -10, 55, 24, 25, 0.5); + gridBuilder->addCoarseGrid(-12, -10, -10, 55, 24, 25, 1.0); + gridBuilder->addGrid(new Cuboid(-10, -8, -8, 50, 22, 22)); TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/input/local_input/bruecke.stl"); - //gridBuilder->addGrid(triangularMesh, 2); gridBuilder->addGeometry(triangularMesh); @@ -300,8 +302,8 @@ void multipleLevel(const std::string& configPath) SPtr<Parameter> para = Parameter::make(); - SPtr<GridProvider> gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para); - //SPtr<GridProvider> gridGenerator = GridProvider::makeGridReader(false, para); + SPtr<GridProvider> gridGenerator = GridGenerator::make(gridBuilder, para); + //SPtr<GridProvider> gridGenerator = GridReader::make(FileFormat::BINARY, para); std::ifstream stream; stream.open(configPath.c_str(), std::ios::in); -- GitLab