41 namespace NekMeshUtils
46 return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
81 for (
int i = 1; i < all.num_elements() - 1; i++)
89 for (
int i = 2; i < all.num_elements() - 2; i++)
96 ASSERTL0(
false,
"Should not be able to pass vert");
105 switch (o->GetType())
109 bnds = std::dynamic_pointer_cast<
CADCurve>(o)->GetBounds();
110 for (
int i = 1; i < all.num_elements() - 1; i++)
118 bnds = std::dynamic_pointer_cast<
CADSurf>(o)->GetBounds();
119 for (
int i = 2; i < all.num_elements() - 2; i++)
133 ASSERTL0(
false,
"Should not be able to pass vert");
142 switch (o->GetType())
146 bnds = std::dynamic_pointer_cast<
CADCurve>(o)->GetBounds();
147 for (
int i = 1; i < all.num_elements() - 1; i++)
155 bnds = std::dynamic_pointer_cast<
CADSurf>(o)->GetBounds();
156 for (
int i = 2; i < all.num_elements() - 2; i++)
170 ASSERTL0(
false,
"Should not be able to pass vert");
182 for (
int i = 0; i < xitst.num_elements(); i++)
184 val[i + 1] = xitst[i];
186 val[all.num_elements() - 1] = all[all.num_elements() - 1];
192 for (
int i = 0; i < xitst.num_elements(); i++)
194 val[i + 2] = xitst[i];
196 val[all.num_elements() - 2] = all[all.num_elements() - 2];
197 val[all.num_elements() - 1] = all[all.num_elements() - 1];
205 for (
int i = 0; i < all.num_elements() - 1; i++)
209 dis[0] * dis[0] + dis[1] * dis[1] + dis[2] * dis[2];
210 ret += norm / (z[i + 1] - z[i]);
218 for (
int i = 0; i < val.num_elements() / 2; i++)
221 uv[i][0] = val[i * 2 + 0];
222 uv[i][1] = val[i * 2 + 1];
224 for (
int i = 0; i < uv.num_elements() - 1; i++)
228 dis[0] * dis[0] + dis[1] * dis[1] + dis[2] * dis[2];
229 ret += norm / (z[i + 1] - z[i]);
242 for (
int i = 0; i < xitst.num_elements(); i++)
244 val[i + 1] = xitst[i];
246 val[all.num_elements() - 1] = all[all.num_elements() - 1];
252 for (
int i = 0; i < xitst.num_elements(); i++)
254 val[i + 2] = xitst[i];
256 val[all.num_elements() - 2] = all[all.num_elements() - 2];
257 val[all.num_elements() - 1] = all[all.num_elements() - 1];
265 vector<Array<OneD, NekDouble> > r;
266 vector<Array<OneD, NekDouble> > dr;
268 for (
int i = 0; i < all.num_elements(); i++)
272 for (
int j = 0; j < 3; j++)
281 DNekMat J(all.num_elements() - 2, 1, 0.0);
282 for (
int i = 0; i < all.num_elements() - 2; i++)
285 2.0 / (z[i + 1] - z[i]) *
Dot(dr[i + 1],
Take(r[i + 1], r[i])) -
286 2.0 / (z[i + 2] - z[i + 1]) *
287 Dot(dr[i + 1],
Take(r[i + 2], r[i + 1]));
297 for (
int i = 0; i < val.num_elements() / 2; i++)
300 uv[i][0] = val[i * 2 + 0];
301 uv[i][1] = val[i * 2 + 1];
304 vector<Array<OneD, NekDouble> > r;
305 vector<Array<OneD, NekDouble> > dru, drv;
306 for (
int i = 0; i < uv.num_elements(); i++)
310 for (
int j = 0; j < 3; j++)
321 DNekMat J(2 * (uv.num_elements() - 2), 1, 0.0);
322 for (
int i = 0; i < uv.num_elements() - 2; i++)
324 J(2 * i + 0, 0) = 2.0 / (z[i + 1] - z[i]) *
325 Dot(dru[i + 1],
Take(r[i + 1], r[i])) +
326 2.0 / (z[i + 2] - z[i + 1]) *
327 Dot(dru[i + 1],
Take(r[i + 1], r[i + 2]));
329 J(2 * i + 1, 0) = 2.0 / (z[i + 1] - z[i]) *
330 Dot(drv[i + 1],
Take(r[i + 1], r[i])) +
331 2.0 / (z[i + 2] - z[i + 1]) *
332 Dot(drv[i + 1],
Take(r[i + 1], r[i + 2]));
345 for (
int i = 0; i < xinew.num_elements(); i++)
347 all[i + 1] = xinew[i];
352 for (
int i = 0; i < xinew.num_elements(); i++)
354 all[i + 2] = xinew[i];
std::shared_ptr< CADSurf > CADSurfSharedPtr
#define ASSERTL0(condition, msg)
base class for CAD curves.
Array< OneD, NekDouble > Take(Array< OneD, NekDouble > a, Array< OneD, NekDouble > b)
Array< OneD, NekDouble > Times(NekDouble t, Array< OneD, NekDouble > a)
NekDouble Dot(Array< OneD, NekDouble > a, Array< OneD, NekDouble > b)
std::shared_ptr< CADCurve > CADCurveSharedPtr
base class for a cad surface
Array< OneD, NekDouble > Add(Array< OneD, NekDouble > a, Array< OneD, NekDouble > b)