Skip to content
Snippets Groups Projects
Commit 5ca7b234 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add an unordered 1d mesh to the mesh database

The aim of this mesh is to avoid the particular situation of the
generated 1d mesh.
parent 4b59dbba
No related branches found
No related tags found
1 merge request!124Add files for high order integration with quadratures
......@@ -21,6 +21,7 @@ MeshDataBaseForTests::MeshDataBaseForTests()
m_cartesian_3d_mesh = std::dynamic_pointer_cast<const Mesh<Connectivity<3>>>(
CartesianMeshBuilder{TinyVector<3>{0, 1, 0}, TinyVector<3>{2, -1, 3}, TinyVector<3, size_t>{6, 7, 4}}.mesh());
m_unordered_1d_mesh = _buildUnordered1dMesh();
m_hybrid_2d_mesh = _buildHybrid2dMesh();
m_hybrid_3d_mesh = _buildHybrid3dMesh();
}
......@@ -64,6 +65,12 @@ MeshDataBaseForTests::cartesian3DMesh() const
return m_cartesian_3d_mesh;
}
std::shared_ptr<const Mesh<Connectivity<1>>>
MeshDataBaseForTests::unordered1DMesh() const
{
return m_unordered_1d_mesh;
}
std::shared_ptr<const Mesh<Connectivity<2>>>
MeshDataBaseForTests::hybrid2DMesh() const
{
......@@ -76,6 +83,105 @@ MeshDataBaseForTests::hybrid3DMesh() const
return m_hybrid_3d_mesh;
}
std::shared_ptr<const Mesh<Connectivity<1>>>
MeshDataBaseForTests::_buildUnordered1dMesh()
{
const std::string filename = std::filesystem::path{PUGS_BINARY_DIR}.append("tests").append("unordered-1d.msh");
if (parallel::rank() == 0) {
std::ofstream fout(filename);
fout << R"($MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
4
0 1 "XMIN"
0 2 "XMAX"
1 3 "LEFT"
1 4 "RIGHT"
$EndPhysicalNames
$Nodes
35
1 0 0 0
2 -1 0 0
3 1 0 0
4 0.03246387076421061 0 0
5 0.07692961499792127 0 0
6 0.1378343163027127 0 0
7 0.2212554508344625 0 0
8 0.3355173320316702 0 0
9 0.4920217492706127 0 0
10 0.7063857794730655 0 0
11 -0.9513615311521172 0 0
12 -0.9036693300347614 0 0
13 -0.8569049934960202 0 0
14 -0.8110504814343311 0 0
15 -0.7660880891035384 0 0
16 -0.7220004662902741 0 0
17 -0.6787705699229041 0 0
18 -0.6363817403249178 0 0
19 -0.5948175927947426 0 0
20 -0.5540620983944274 0 0
21 -0.5140995098187926 0 0
22 -0.4749144219806904 0 0
23 -0.4364916774353312 0 0
24 -0.3988164798351664 0 0
25 -0.3618742567441507 0 0
26 -0.3256507606537927 0 0
27 -0.2901320091863738 0 0
28 -0.2553042883413312 0 0
29 -0.2211541538737678 0 0
30 -0.1876684263237806 0 0
31 -0.1548341743437643 0 0
32 -0.1226387276497952 0 0
33 -0.09106965120674937 0 0
34 -0.0601147701140996 0 0
35 -0.02976212372405818 0 0
$EndNodes
$Elements
36
1 15 2 1 2 2
2 15 2 2 3 3
3 1 2 4 1 1 4
4 1 2 4 1 4 5
5 1 2 4 1 5 6
6 1 2 4 1 6 7
7 1 2 4 1 7 8
8 1 2 4 1 8 9
9 1 2 4 1 9 10
10 1 2 4 1 10 3
11 1 2 3 2 2 11
12 1 2 3 2 11 12
13 1 2 3 2 12 13
14 1 2 3 2 13 14
15 1 2 3 2 14 15
16 1 2 3 2 15 16
17 1 2 3 2 16 17
18 1 2 3 2 17 18
19 1 2 3 2 18 19
20 1 2 3 2 19 20
21 1 2 3 2 20 21
22 1 2 3 2 21 22
23 1 2 3 2 22 23
24 1 2 3 2 23 24
25 1 2 3 2 24 25
26 1 2 3 2 25 26
27 1 2 3 2 26 27
28 1 2 3 2 27 28
29 1 2 3 2 28 29
30 1 2 3 2 29 30
31 1 2 3 2 30 31
32 1 2 3 2 31 32
33 1 2 3 2 32 33
34 1 2 3 2 33 34
35 1 2 3 2 34 35
36 1 2 3 2 35 1
$EndElements
)";
}
return std::dynamic_pointer_cast<const Mesh<Connectivity<1>>>(GmshReader{filename}.mesh());
}
std::shared_ptr<const Mesh<Connectivity<2>>>
MeshDataBaseForTests::_buildHybrid2dMesh()
{
......
......@@ -9,7 +9,9 @@ class Connectivity;
template <typename ConnectivityT>
class Mesh;
#include <array>
#include <memory>
#include <string>
class MeshDataBaseForTests
{
......@@ -22,21 +24,47 @@ class MeshDataBaseForTests
std::shared_ptr<const Mesh<Connectivity<2>>> m_cartesian_2d_mesh;
std::shared_ptr<const Mesh<Connectivity<3>>> m_cartesian_3d_mesh;
std::shared_ptr<const Mesh<Connectivity<1>>> m_unordered_1d_mesh;
std::shared_ptr<const Mesh<Connectivity<2>>> m_hybrid_2d_mesh;
std::shared_ptr<const Mesh<Connectivity<3>>> m_hybrid_3d_mesh;
std::shared_ptr<const Mesh<Connectivity<1>>> _buildUnordered1dMesh();
std::shared_ptr<const Mesh<Connectivity<2>>> _buildHybrid2dMesh();
std::shared_ptr<const Mesh<Connectivity<3>>> _buildHybrid3dMesh();
public:
std::shared_ptr<const Mesh<Connectivity<1>>> cartesian1DMesh() const;
std::shared_ptr<const Mesh<Connectivity<2>>> cartesian2DMesh() const;
std::shared_ptr<const Mesh<Connectivity<3>>> cartesian3DMesh() const;
std::shared_ptr<const Mesh<Connectivity<1>>> unordered1DMesh() const;
std::shared_ptr<const Mesh<Connectivity<2>>> cartesian2DMesh() const;
std::shared_ptr<const Mesh<Connectivity<2>>> hybrid2DMesh() const;
std::shared_ptr<const Mesh<Connectivity<3>>> cartesian3DMesh() const;
std::shared_ptr<const Mesh<Connectivity<3>>> hybrid3DMesh() const;
static const MeshDataBaseForTests& get();
auto
all1DMeshes() const
{
return std::array{std::make_pair(std::string("cartesian 1d mesh"), cartesian1DMesh()),
std::make_pair(std::string("unordered 1d mesh"), unordered1DMesh())};
}
auto
all2DMeshes() const
{
return std::array{std::make_pair(std::string("cartesian 2d mesh"), cartesian2DMesh()),
std::make_pair(std::string("hybrid 2d mesh"), hybrid2DMesh())};
}
auto
all3DMeshes() const
{
return std::array{std::make_pair(std::string("cartesian 3d mesh"), cartesian3DMesh()),
std::make_pair(std::string("hybrid 3d mesh"), hybrid3DMesh())};
}
static void create();
static void destroy();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment