OGS
readMeshFromFile.cpp
Go to the documentation of this file.
1
18#include "readMeshFromFile.h"
19
20#ifdef USE_PETSC
21#include <petsc.h>
22#endif
23
24#include <boost/algorithm/string/erase.hpp>
25
26#include "BaseLib/FileTools.h"
27#include "BaseLib/Logging.h"
28#include "BaseLib/StringTools.h"
31#include "MeshLib/Mesh.h"
32
33#ifdef USE_PETSC
36#endif
37
38namespace
39{
40MeshLib::Mesh* readMeshFromFileSerial(const std::string& file_name)
41{
42 if (BaseLib::hasFileExtension(".msh", file_name))
43 {
45 return meshIO.loadMeshFromFile(file_name);
46 }
47
48 if (BaseLib::hasFileExtension(".vtu", file_name))
49 {
51 }
52
53 if (BaseLib::hasFileExtension(".vtk", file_name))
54 {
56 }
57
58 ERR("readMeshFromFile(): Unknown mesh file format in file {:s}.",
59 file_name);
60 return nullptr;
61}
62} // namespace
63
64namespace MeshLib
65{
66namespace IO
67{
68MeshLib::Mesh* readMeshFromFile(const std::string& file_name)
69{
70#ifdef USE_PETSC
71 int mpi_init;
72 MPI_Initialized(&mpi_init);
73 if (mpi_init == 1)
74 {
75 int world_size;
76 MPI_Comm_size(MPI_COMM_WORLD, &world_size);
77 if (world_size > 1)
78 {
79 MeshLib::IO::NodePartitionedMeshReader read_pmesh(MPI_COMM_WORLD);
80 const std::string file_name_base =
82 return read_pmesh.read(file_name_base);
83 }
84 if (world_size == 1)
85 {
86 std::unique_ptr<Mesh> mesh{readMeshFromFileSerial(file_name)};
87 return new MeshLib::NodePartitionedMesh(*mesh);
88 }
89 return nullptr;
90 }
91#endif
92 return readMeshFromFileSerial(file_name);
93}
94
95} // end namespace IO
96} // end namespace MeshLib
Filename manipulation routines.
void ERR(char const *fmt, Args const &... args)
Definition: Logging.h:44
Definition of the MeshIO class.
Definition of the Mesh class.
Declare a class to read node-wise partitioned mesh with MPI functions.
Definition of mesh class for partitioned mesh (by node) for parallel computing within the framework o...
Definition of string helper functions.
Implementation of the VtuInterface class.
Interface for handling mesh files from OGS-5 and below. (*.msh files)
Definition: MeshIO.h:37
MeshLib::Mesh * loadMeshFromFile(const std::string &file_name)
Read mesh from file.
Definition: MeshIO.cpp:42
MeshLib::NodePartitionedMesh * read(const std::string &file_name_base)
Create a NodePartitionedMesh object, read data to it, and return a pointer to it. Data files are in b...
static MeshLib::Mesh * readVTKFile(std::string const &file_name)
static MeshLib::Mesh * readVTUFile(std::string const &file_name)
std::string dropFileExtension(std::string const &filename)
Definition: FileTools.cpp:169
bool hasFileExtension(std::string const &extension, std::string const &filename)
Definition: FileTools.cpp:191
MeshLib::Mesh * readMeshFromFile(const std::string &file_name)
MeshLib::Mesh * readMeshFromFileSerial(const std::string &file_name)
Definition of readMeshFromFile function.