From 4832736156525b0db2635dc11827f1b73b023963 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Tue, 24 Apr 2018 19:17:45 +0200
Subject: [PATCH] begining of Gmsh file reader

---
 CMakeLists.txt          |  1 +
 src/CMakeLists.txt      |  2 +-
 src/main.cpp            | 12 ++++++++++--
 src/mesh/CMakeLists.txt | 13 +++++++++++++
 src/mesh/GmshReader.cpp | 13 +++++++++++++
 src/mesh/GmshReader.hpp | 13 +++++++++++++
 6 files changed, 51 insertions(+), 3 deletions(-)
 create mode 100644 src/mesh/CMakeLists.txt
 create mode 100644 src/mesh/GmshReader.cpp
 create mode 100644 src/mesh/GmshReader.hpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36700ea80..8bd01b180 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,5 +64,6 @@ target_link_libraries(
   pastis
   kokkos
   PastisUtils
+  PastisMesh
   PastisExperimental)
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index db8252e96..67787648a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -12,7 +12,7 @@ include_directories(utils)
 include_directories(algebra)
 
 # Pastis mesh
-#add_subdirectory(mesh)
+add_subdirectory(mesh)
 include_directories(mesh)
 
 # Pastis mesh
diff --git a/src/main.cpp b/src/main.cpp
index dbf5164af..cd5286009 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -19,6 +19,8 @@
 #include <TinyVector.hpp>
 #include <TinyMatrix.hpp>
 
+#include <GmshReader.hpp>
+
 #include <CLI/CLI.hpp>
 #include <cassert>
 #include <limits>
@@ -27,12 +29,14 @@
 int main(int argc, char *argv[])
 {
   long unsigned number = 10;
-
+  std::string filename;
   {
     CLI::App app{"Pastis help"};
 
     app.add_option("number,-n,--number", number, "Number of cells");//->required();
 
+    app.add_option("filename,-f,--filename", filename, "gmsh file");//->required();
+
     int threads=-1;
     app.add_option("--threads", threads, "Number of Kokkos threads")->check(CLI::Range(1,std::numeric_limits<decltype(threads)>::max()));
 
@@ -116,7 +120,11 @@ int main(int argc, char *argv[])
   // }
 
 
-  { // class for acoustic solver test
+  if (filename != "") {
+    std::cout << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n";
+    GmshReader gmsh_reader(filename);
+  } else {
+    // class for acoustic solver test
     Kokkos::Timer timer;
     timer.reset();
     Connectivity1D connectivity(number);
diff --git a/src/mesh/CMakeLists.txt b/src/mesh/CMakeLists.txt
new file mode 100644
index 000000000..f07bc30ba
--- /dev/null
+++ b/src/mesh/CMakeLists.txt
@@ -0,0 +1,13 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+# ------------------- Source files --------------------
+
+add_library(
+  PastisMesh
+  GmshReader.cpp)
+
+#include_directories(${PASTIS_SOURCE_DIR}/utils)
+
+# Additional dependencies
+#add_dependencies(PastisMesh)
diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
new file mode 100644
index 000000000..9eaaea15f
--- /dev/null
+++ b/src/mesh/GmshReader.cpp
@@ -0,0 +1,13 @@
+#include <GmshReader.hpp>
+
+#include <iostream>
+#include <fstream>
+
+GmshReader::GmshReader(const std::string& filename)
+{
+  std::ifstream fin(filename);
+  if (not fin) {
+    std::cerr << "cannot read file '" << filename << "'\n";
+    std::exit(0);
+  }
+}
diff --git a/src/mesh/GmshReader.hpp b/src/mesh/GmshReader.hpp
new file mode 100644
index 000000000..eafacfeac
--- /dev/null
+++ b/src/mesh/GmshReader.hpp
@@ -0,0 +1,13 @@
+#ifndef GMSH_READER_HPP
+#define GMSH_READER_HPP
+
+#include <string>
+
+class GmshReader
+{
+public:
+  GmshReader(const std::string& filename);
+  ~GmshReader() = default;
+};
+
+#endif // GMSH_READER_HPP
-- 
GitLab