33 mesh.getElementConnectivitiesP());
39std::shared_ptr<mesh::Mesh>
43 const std::string &modelName) {
45 return std::make_shared<mesh::Mesh>(&zmeshDeck, modelDeck);
53 throw std::runtime_error(
54 modelName +
": uniform mesh on a box requires particle geometry object "
55 "(geom::createGeomObject on Particle.Set_i).");
57 const size_t dim = modelDeck->
d_dim;
58 const auto bb = zgeomDeck.
d_geom_p->box();
59 std::pair<std::vector<double>, std::vector<double>> box;
60 box.first.reserve(dim);
61 box.second.reserve(dim);
62 for (
size_t i = 0; i < dim; ++i) {
64 (i == 0) ? bb.first.d_x : (i == 1) ? bb.first.d_y : bb.first.d_z;
66 (i == 0) ? bb.second.d_x : (i == 1) ? bb.second.d_y : bb.second.d_z;
67 box.first.push_back(lo_i);
68 box.second.push_back(hi_i);
71 std::vector<size_t> nGrid(dim);
72 for (
size_t i = 0; i < dim; ++i) {
73 const double span = box.second[i] - box.first[i];
75 throw std::runtime_error(
76 modelName +
": uniform mesh: non-positive axis extent from geom box "
78 std::to_string(i) +
").");
79 nGrid[i] =
static_cast<size_t>(span / zmeshDeck.
d_hMeshing);
87 return std::make_shared<mesh::Mesh>(temp_mesh);
92 throw std::runtime_error(
93 modelName +
": gmsh_builtin_mesh requires particle geometry object "
94 "(geom::createGeomObject on Particle.Set_i).");
96 const std::string mesh_stem =
103 return std::make_shared<mesh::Mesh>(temp_mesh);
106 throw std::runtime_error(
107 "Error: Unsupported in-built mesh: CreateMesh.Info = " +
A interface class writing data.
void close()
Closes the file and store it to the hard disk.
void appendMesh(const std::vector< util::Point > *nodes, const size_t &element_type, const std::vector< size_t > *en_con, const std::vector< util::Point > *u=nullptr)
Writes the mesh data to file.
void maybeWriteMeshFile(const inp::MeshDeck &zmeshDeck, const mesh::Mesh &mesh)
void generateBuiltinParticleMeshGmsh(const std::shared_ptr< geom::GeomObject > &geomObj, double h, const std::string &filenameStem, bool vtk_out, bool write_mesh_file, mesh::Mesh *out_mesh, const inp::MeshDeck *meshDeck, const inp::ModelDeck *modelDeck)
In-process Gmsh mesh from geom::GeomObject (after createGeomObject on deck / Particle data).
std::shared_ptr< mesh::Mesh > createParticleMesh(const inp::MeshDeck &zmeshDeck, const geom::GeomData &zgeomDeck, const inp::ModelDeck *modelDeck, const std::string &modelName)
Build a reference-particle mesh: file, uniform rectangle, or in-process Gmsh.
Collection of methods and data related to finite element and mesh.
void createUniformMesh(mesh::Mesh *mesh_p, size_t dim, std::pair< std::vector< double >, std::vector< double > > box, std::vector< size_t > nGrid)
Creates uniform mesh for rectangle/cuboid domain.
void removeNodesInBoxes(mesh::Mesh *mesh_p, const std::vector< std::vector< double > > &boxes)
Removes nodes lying inside any of the given axis-aligned boxes.
std::string removeExtensionFromFile(std::string const &filename)
Remove extension from the filename Source - https://stackoverflow.com/a/24386991.
Input data for geometrical objects.
std::shared_ptr< geom::GeomObject > d_geom_p
Zone geometry.
std::string d_geomName
Zone type.
Structure to read and store mesh related input data.
double d_hMeshing
Target spacing for in-built meshers only (Gmsh uniform / uniform rectangle grid).
bool d_writeMeshFile
If true (default), Gmsh-based create-mesh paths write a .msh file; set false for in-memory only.
bool d_createMesh
Specify if we create mesh using in-built gmsh or in-built routine for uniform discretization of recta...
std::vector< std::vector< double > > d_voidRegions
Axis-aligned boxes emptied from an in-built uniform grid (CreateMesh.Void_Regions: [xlo,...
std::string d_createMeshInfo
Selector for in-built mesh creation (e.g. uniform rectangle, gmsh_builtin_mesh for built-in geometrie...
std::string d_filename
Filename to read mesh data.
Structure to read and store model related input data.