Skip to content
Snippets Groups Projects
Commit cea506c2 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[MeL] Pass array values directly to ctors.

Avoids local copy of values.
Fixes clang-tidy warning about 'uninitialized record type'.
parent 9f6c08b6
No related branches found
No related tags found
No related merge requests found
...@@ -146,10 +146,7 @@ Mesh* MeshGenerator::generateLineMesh( ...@@ -146,10 +146,7 @@ Mesh* MeshGenerator::generateLineMesh(
for (std::size_t i = 0; i < n_cells; i++) for (std::size_t i = 0; i < n_cells; i++)
{ {
std::array<Node*, 2> element_nodes; elements.push_back(new Line({nodes[i], nodes[i + 1]}));
element_nodes[0] = nodes[i];
element_nodes[1] = nodes[i + 1];
elements.push_back (new Line(element_nodes));
} }
return new Mesh(mesh_name, nodes, elements); return new Mesh(mesh_name, nodes, elements);
...@@ -222,12 +219,9 @@ Mesh* MeshGenerator::generateRegularQuadMesh( ...@@ -222,12 +219,9 @@ Mesh* MeshGenerator::generateRegularQuadMesh(
const std::size_t offset_y2 = (j + 1) * n_x_nodes; const std::size_t offset_y2 = (j + 1) * n_x_nodes;
for (std::size_t k = 0; k < n_x_cells; k++) for (std::size_t k = 0; k < n_x_cells; k++)
{ {
std::array<Node*, 4> element_nodes; elements.push_back(
element_nodes[0] = nodes[offset_y1 + k]; new Quad({nodes[offset_y1 + k], nodes[offset_y1 + k + 1],
element_nodes[1] = nodes[offset_y1 + k + 1]; nodes[offset_y2 + k + 1], nodes[offset_y2 + k]}));
element_nodes[2] = nodes[offset_y2 + k + 1];
element_nodes[3] = nodes[offset_y2 + k];
elements.push_back (new Quad(element_nodes));
} }
} }
...@@ -319,18 +313,17 @@ Mesh* MeshGenerator::generateRegularHexMesh( ...@@ -319,18 +313,17 @@ Mesh* MeshGenerator::generateRegularHexMesh(
const std::size_t offset_y2 = (j + 1) * n_x_nodes; const std::size_t offset_y2 = (j + 1) * n_x_nodes;
for (std::size_t k = 0; k < n_x_cells; k++) for (std::size_t k = 0; k < n_x_cells; k++)
{ {
std::array<Node*, 8> element_nodes; elements.push_back(
// bottom new Hex({// bottom
element_nodes[0] = nodes[offset_z1 + offset_y1 + k]; nodes[offset_z1 + offset_y1 + k],
element_nodes[1] = nodes[offset_z1 + offset_y1 + k + 1]; nodes[offset_z1 + offset_y1 + k + 1],
element_nodes[2] = nodes[offset_z1 + offset_y2 + k + 1]; nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[3] = nodes[offset_z1 + offset_y2 + k]; nodes[offset_z1 + offset_y2 + k],
// top // top
element_nodes[4] = nodes[offset_z2 + offset_y1 + k]; nodes[offset_z2 + offset_y1 + k],
element_nodes[5] = nodes[offset_z2 + offset_y1 + k + 1]; nodes[offset_z2 + offset_y1 + k + 1],
element_nodes[6] = nodes[offset_z2 + offset_y2 + k + 1]; nodes[offset_z2 + offset_y2 + k + 1],
element_nodes[7] = nodes[offset_z2 + offset_y2 + k]; nodes[offset_z2 + offset_y2 + k]}));
elements.push_back (new Hex(element_nodes));
} }
} }
} }
...@@ -403,16 +396,13 @@ Mesh* MeshGenerator::generateRegularTriMesh( ...@@ -403,16 +396,13 @@ Mesh* MeshGenerator::generateRegularTriMesh(
const std::size_t offset_y2 = (j + 1) * n_x_nodes; const std::size_t offset_y2 = (j + 1) * n_x_nodes;
for (std::size_t k = 0; k < n_x_cells; k++) for (std::size_t k = 0; k < n_x_cells; k++)
{ {
std::array<Node*, 3> element1_nodes; elements.push_back(
element1_nodes[0] = nodes[offset_y1 + k]; new Tri({nodes[offset_y1 + k], nodes[offset_y2 + k + 1],
element1_nodes[1] = nodes[offset_y2 + k + 1]; nodes[offset_y2 + k]}));
element1_nodes[2] = nodes[offset_y2 + k];
elements.push_back (new Tri(element1_nodes)); elements.push_back(
std::array<Node*, 3> element2_nodes; new Tri({nodes[offset_y1 + k], nodes[offset_y1 + k + 1],
element2_nodes[0] = nodes[offset_y1 + k]; nodes[offset_y2 + k + 1]}));
element2_nodes[1] = nodes[offset_y1 + k + 1];
element2_nodes[2] = nodes[offset_y2 + k + 1];
elements.push_back (new Tri(element2_nodes));
} }
} }
...@@ -533,71 +523,53 @@ Mesh* MeshGenerator::generateRegularTetMesh( ...@@ -533,71 +523,53 @@ Mesh* MeshGenerator::generateRegularTetMesh(
for (std::size_t k = 0; k < n_x_cells; k++) for (std::size_t k = 0; k < n_x_cells; k++)
{ {
// tet 1 // tet 1
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y1 + k],
element_nodes[0] = nodes[offset_z1 + offset_y1 + k]; nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[1] = nodes[offset_z1 + offset_y2 + k + 1]; nodes[offset_z1 + offset_y2 + k],
element_nodes[2] = nodes[offset_z1 + offset_y2 + k]; // top
// top nodes[offset_z2 + offset_y1 + k]}));
element_nodes[3] = nodes[offset_z2 + offset_y1 + k];
elements.push_back (new Tet(element_nodes));
}
// tet 2 // tet 2
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[0] = nodes[offset_z1 + offset_y2 + k + 1]; nodes[offset_z1 + offset_y2 + k],
element_nodes[1] = nodes[offset_z1 + offset_y2 + k]; // top
// top nodes[offset_z2 + offset_y1 + k],
element_nodes[2] = nodes[offset_z2 + offset_y1 + k]; nodes[offset_z2 + offset_y2 + k + 1]}));
element_nodes[3] = nodes[offset_z2 + offset_y2 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 3 // tet 3
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y2 + k],
element_nodes[0] = nodes[offset_z1 + offset_y2 + k]; // top
// top nodes[offset_z2 + offset_y1 + k],
element_nodes[1] = nodes[offset_z2 + offset_y1 + k]; nodes[offset_z2 + offset_y2 + k + 1],
element_nodes[2] = nodes[offset_z2 + offset_y2 + k + 1]; nodes[offset_z2 + offset_y2 + k]}));
element_nodes[3] = nodes[offset_z2 + offset_y2 + k];
elements.push_back (new Tet(element_nodes));
}
// tet 4 // tet 4
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y1 + k],
element_nodes[0] = nodes[offset_z1 + offset_y1 + k]; nodes[offset_z1 + offset_y1 + k + 1],
element_nodes[1] = nodes[offset_z1 + offset_y1 + k + 1]; nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[2] = nodes[offset_z1 + offset_y2 + k + 1]; // top
// top nodes[offset_z2 + offset_y1 + k + 1]}));
element_nodes[3] = nodes[offset_z2 + offset_y1 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 5 // tet 5
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y1 + k],
element_nodes[0] = nodes[offset_z1 + offset_y1 + k]; nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[1] = nodes[offset_z1 + offset_y2 + k + 1]; // top
// top nodes[offset_z2 + offset_y1 + k],
element_nodes[2] = nodes[offset_z2 + offset_y1 + k]; nodes[offset_z2 + offset_y1 + k + 1]}));
element_nodes[3] = nodes[offset_z2 + offset_y1 + k + 1];
elements.push_back (new Tet(element_nodes));
}
// tet 6 // tet 6
{ elements.push_back(
std::array<Node*, 4> element_nodes; new Tet({// bottom
// bottom nodes[offset_z1 + offset_y2 + k + 1],
element_nodes[0] = nodes[offset_z1 + offset_y2 + k + 1]; // top
// top nodes[offset_z2 + offset_y1 + k],
element_nodes[1] = nodes[offset_z2 + offset_y1 + k]; nodes[offset_z2 + offset_y1 + k + 1],
element_nodes[2] = nodes[offset_z2 + offset_y1 + k + 1]; nodes[offset_z2 + offset_y2 + k + 1]}));
element_nodes[3] = nodes[offset_z2 + offset_y2 + k + 1];
elements.push_back (new Tet(element_nodes));
}
} }
} }
} }
...@@ -617,12 +589,11 @@ MeshGenerator::createSurfaceMesh(std::string const& mesh_name, ...@@ -617,12 +589,11 @@ MeshGenerator::createSurfaceMesh(std::string const& mesh_name,
std::vector<MeshLib::Node*> nodes; std::vector<MeshLib::Node*> nodes;
for (std::size_t j(0); j<n_steps[1]; ++j) { for (std::size_t j(0); j<n_steps[1]; ++j) {
for (std::size_t i(0); i<n_steps[0]; ++i) { for (std::size_t i(0); i<n_steps[0]; ++i) {
std::size_t const id(i+j*n_steps[1]); std::size_t const id = i + j * n_steps[1];
std::array<double, 3> coords; double const x = ll[0] + i * step_size[0];
coords[0] = ll[0]+i*step_size[0]; double const y = ll[1] + j * step_size[1];
coords[1] = ll[1]+j*step_size[1];
coords[2] = f(coords[0],coords[1]); nodes.push_back(new MeshLib::Node({x, y, f(x, y)}, id));
nodes.push_back(new MeshLib::Node(coords, id));
} }
} }
...@@ -633,10 +604,10 @@ MeshGenerator::createSurfaceMesh(std::string const& mesh_name, ...@@ -633,10 +604,10 @@ MeshGenerator::createSurfaceMesh(std::string const& mesh_name,
std::size_t id_lr(i+1+j*n_steps[0]); std::size_t id_lr(i+1+j*n_steps[0]);
std::size_t id_ul(i+(j+1)*n_steps[0]); std::size_t id_ul(i+(j+1)*n_steps[0]);
std::size_t id_ur(i+1+(j+1)*n_steps[0]); std::size_t id_ur(i+1+(j+1)*n_steps[0]);
sfc_eles.push_back(new MeshLib::Tri(std::array<MeshLib::Node*,3> sfc_eles.push_back(
{{nodes[id_ll], nodes[id_lr], nodes[id_ur]}})); new MeshLib::Tri({nodes[id_ll], nodes[id_lr], nodes[id_ur]}));
sfc_eles.push_back(new MeshLib::Tri(std::array<MeshLib::Node*,3> sfc_eles.push_back(
{{nodes[id_ll], nodes[id_ur], nodes[id_ul]}})); new MeshLib::Tri({nodes[id_ll], nodes[id_ur], nodes[id_ul]}));
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment