58 auto &curveNodes = graph->GetAllCurveNodes();
68 std::set<int> updatedVerts, updatedEdges, updatedFaces;
70 dim = graph->GetSpaceDimension();
74 for (i = 0; i < fields[0]->GetExpSize(); ++i)
77 int offset = fields[0]->GetPhys_Offset(i);
78 int nquad = exp->GetTotPoints();
82 for (j = 0; j < dim; ++j)
91 exp->GetCoords(coord[0], coord[1]);
96 for (j = 0; j < exp->GetGeom()->GetNumEdges(); ++j)
108 int nEdgePts = exp->GetTraceNumPoints(j);
119 for (k = 0; k < dim; ++k)
123 exp->GetTracePhysVals(j, seg, phys[k], edgePhys[k]);
124 exp->GetTracePhysVals(j, seg, coord[k], edgeCoord[k]);
128 for (k = 0; k < 2; ++k)
131 if (updatedVerts.find(
id) != updatedVerts.end())
139 (*pt)(0) + edgePhys[0][k * (nEdgePts - 1)],
140 (*pt)(1) + edgePhys[1][k * (nEdgePts - 1)], (*pt)(2));
142 updatedVerts.insert(
id);
151 for (k = 0; k < nEdgePts; ++k)
156 edgeCoord[0][k] + edgePhys[0][k],
157 edgeCoord[1][k] + edgePhys[1][k],
159 curve->m_points.push_back(vert.get());
160 curveNodes.push_back(std::move(vert));
169 exp->GetCoords(coord[0], coord[1], coord[2]);
174 for (j = 0; j < exp->GetNtraces(); ++j)
198 "Deformation requires GLL points in both "
199 "directions on a face.");
218 for (k = 0; k < dim; ++k)
222 exp3d->GetTracePhysVals(j, faceexp, phys[k], tmp, orient);
223 exp3d->GetTracePhysVals(j, faceexp, coord[k], newPos[k],
225 Vmath::Vadd(nq0 * nq1, tmp, 1, newPos[k], 1, newPos[k], 1);
230 int nq = std::max(nq0, nq1);
242 for (k = 0; k < dim; ++k)
246 faceexp->GetPointsKeys()[1],
247 newPos[k], edgePts, edgePts,
251 int edgeOff[2][4][2] = {
252 {{0, 1}, {nq - 1, nq}, {nq * (nq - 1), -nq}, {-1, -1}},
256 {nq * (nq - 1), -nq}}};
265 if (updatedVerts.find(
id) == updatedVerts.end())
269 intPos[1][edgeOff[o][k][0]],
270 intPos[2][edgeOff[o][k][0]]);
271 updatedVerts.insert(
id);
276 if (updatedEdges.find(
id) == updatedEdges.end())
285 const int offset = edgeOff[o][k][0];
286 const int pos = edgeOff[o][k][1];
290 for (l = nq - 1; l >= 0; --l)
292 int m = offset + pos * l;
297 intPos[0][m], intPos[1][m],
299 curve->m_points.push_back(vert.get());
300 curveNodes.push_back(std::move(vert));
305 for (l = 0; l < nq; ++l)
307 int m = offset + pos * l;
312 intPos[0][m], intPos[1][m],
314 curve->m_points.push_back(vert.get());
315 curveNodes.push_back(std::move(vert));
346 nq, LibUtilities::eGaussRadauMAlpha1Beta0));
350 for (k = 0; k < dim; ++k)
355 faceexp->GetBasis(0)->GetBasisKey(),
356 faceexp->GetBasis(1)->GetBasisKey(), newPos[k], B0,
367 for (l = 0; l < nq * (nq + 1) / 2; ++l)
372 newPos[0][l], newPos[1][l],
374 curve->m_points.push_back(vert.get());
375 curveNodes.push_back(std::move(vert));
380 for (l = 0; l < nq * nq; ++l)
385 intPos[0][l], intPos[1][l],
387 curve->m_points.push_back(vert.get());
388 curveNodes.push_back(std::move(vert));
399 for (i = 0; i < fields.size(); ++i)