8 template<
typename TDataType>
14 template<
typename TDataType>
19 template<
typename TDataType>
29 gmsh::model::geo::addPoint(-1, -1, -1, lc, pIndex++);
30 gmsh::model::geo::addPoint(1, -1, -1, lc, pIndex++);
31 gmsh::model::geo::addPoint(1, 1, -1, lc, pIndex++);
32 gmsh::model::geo::addPoint(-1, 1, -1, lc, pIndex++);
33 gmsh::model::geo::addPoint(-1, -1, 1, lc, pIndex++);
34 gmsh::model::geo::addPoint(1, -1, 1, lc, pIndex++);
35 gmsh::model::geo::addPoint(1, 1, 1, lc, pIndex++);
36 gmsh::model::geo::addPoint(-1, 1, 1, lc, pIndex++);
44 for (
int i = 0; i < 3; i++)
46 gmsh::model::geo::addLine(p, p + 1, lIndex++);
49 gmsh::model::geo::addLine(p, 1, lIndex++);
52 for (
int i = 0; i < 3; i++)
54 gmsh::model::geo::addLine(p, p + 1, lIndex++);
57 gmsh::model::geo::addLine(p, 5, lIndex++);
61 for (
int i = 0; i < 4; i++)
63 gmsh::model::geo::addLine(p, q, lIndex++);
71 gmsh::model::geo::addCurveLoop({ 1, 2, 3, 4 }, 1);
72 gmsh::model::geo::addCurveLoop({ 5, 6, 7, 8 }, 2);
73 gmsh::model::geo::addCurveLoop({ 1, 10, -5, -9 }, 3);
74 gmsh::model::geo::addCurveLoop({ 2, 11, -6, -10 }, 4);
75 gmsh::model::geo::addCurveLoop({ 3, 12, -7, -11 }, 5);
76 gmsh::model::geo::addCurveLoop({ -4,12, 8, -9 }, 6);
80 gmsh::model::geo::addPlaneSurface({ 1 }, 1);
81 gmsh::model::geo::addPlaneSurface({ 2 }, 2);
82 gmsh::model::geo::addPlaneSurface({ 3 }, 3);
83 gmsh::model::geo::addPlaneSurface({ 4 }, 4);
84 gmsh::model::geo::addPlaneSurface({ 5 }, 5);
85 gmsh::model::geo::addPlaneSurface({ 6 }, 6);
87 gmsh::model::geo::addSurfaceLoop({ 1, 2, 3, 4, 5, 6 }, 1);
88 gmsh::model::geo::addVolume({ 1 }, 1);
94 gmsh::model::setPhysicalName(3, 1,
"My volume");
103 gmsh::model::geo::synchronize();
106 gmsh::model::mesh::generate();
109 std::vector<double> nodes, y;
110 std::vector<std::size_t> nodeTags;
111 gmsh::model::mesh::getNodes(nodeTags, nodes, y, -2, -1,
false,
true);
112 std::cout <<
"The number of nodes: " << nodes.size() / 3 << std::endl;
114 std::vector<int> elementTypes;
115 std::vector<std::vector<std::size_t> > elementTags, nodeTags2;
116 gmsh::model::mesh::getElements(elementTypes, elementTags, nodeTags2, -2, -1);
117 std::cout <<
"The number of elements: " << nodeTags2[1].size() / 3 << std::endl;
122 std::vector<Coord> vertices;
123 std::vector<TopologyModule::Triangle> indices;
125 for (
size_t i = 0; i < nodes.size() / 3; i++)
127 vertices.push_back(
Coord(nodes[3 * i], nodes[3 * i + 1], nodes[3 * i + 2]));
130 for (
size_t i = 0; i < nodeTags2[1].size() / 3; i++)
133 indices.push_back(t);
137 if (this->outGmsh()->isEmpty())
139 this->outGmsh()->allocate();
142 auto mesh = this->outGmsh()->getDataPtr();
144 mesh->setPoints(vertices);
145 mesh->setTriangles(indices);
155 elementTypes.clear();
void resetStates() override
RenderRef initialize(QWindow *window, bool defaultRender)
This is an implementation of AdditiveCCD based on peridyno.
DEFINE_CLASS(CircularEmitter)
static void add(GeometryImpl::NewVertex &vtx, int index)