58 m_dim = m_el->GetDim();
59 vector<NodeSharedPtr> ns;
60 m_el->GetCurvedNodes(ns);
61 nodes.resize(ns.size());
62 for (
int i = 0; i < ns.size(); ++i)
64 nodes[i].resize(m_dim);
65 nodes[i][0] = &ns[i]->m_x;
69 nodes[i][1] = &ns[i]->m_y;
74 nodes[i][2] = &ns[i]->m_z;
77 m_idmap[ns[i]->m_id] = i;
91 u2(m_derivUtil->pts), v2(m_derivUtil->pts);
96 vector<vector<NekDouble> > xyz(4);
97 vector<NodeSharedPtr> ns = m_el->GetVertexList();
98 for (
int i = 0; i < 4; i++)
100 vector<NekDouble> x(3);
107 for (
int i = 0; i < m_derivUtil->ptsStd; ++i)
116 J(0, 0) = -0.5 * b1 * xyz[0][0] + 0.5 * b1 * xyz[1][0] +
117 0.5 * b2 * xyz[2][0] - 0.5 * b2 * xyz[3][0];
118 J(1, 0) = -0.5 * b1 * xyz[0][1] + 0.5 * b1 * xyz[1][1] +
119 0.5 * b2 * xyz[2][1] - 0.5 * b2 * xyz[3][1];
121 J(0, 1) = -0.5 * a1 * xyz[0][0] - 0.5 * a2 * xyz[1][0] +
122 0.5 * a2 * xyz[2][0] + 0.5 * a1 * xyz[3][0];
123 J(1, 1) = -0.5 * a1 * xyz[0][1] - 0.5 * a2 * xyz[1][1] +
124 0.5 * a2 * xyz[2][1] + 0.5 * a1 * xyz[3][1];
128 vector<NekDouble> r(10, 0.0);
130 r[9] = 1.0 / (J(0, 0) * J(1, 1) - J(0, 1) * J(1, 0));
141 mapsStd.push_back(r);
144 for (
int i = 0; i < m_derivUtil->pts; ++i)
153 J(0, 0) = -0.5 * b1 * xyz[0][0] + 0.5 * b1 * xyz[1][0] +
154 0.5 * b2 * xyz[2][0] - 0.5 * b2 * xyz[3][0];
155 J(1, 0) = -0.5 * b1 * xyz[0][1] + 0.5 * b1 * xyz[1][1] +
156 0.5 * b2 * xyz[2][1] - 0.5 * b2 * xyz[3][1];
158 J(0, 1) = -0.5 * a1 * xyz[0][0] - 0.5 * a2 * xyz[1][0] +
159 0.5 * a2 * xyz[2][0] + 0.5 * a1 * xyz[3][0];
160 J(1, 1) = -0.5 * a1 * xyz[0][1] - 0.5 * a2 * xyz[1][1] +
161 0.5 * a2 * xyz[2][1] + 0.5 * a1 * xyz[3][1];
165 vector<NekDouble> r(10, 0.0);
167 r[9] = 1.0 / (J(0, 0) * J(1, 1) - J(0, 1) * J(1, 0));
184 J(0, 0) = (*nodes[1][0] - *nodes[0][0]);
185 J(1, 0) = (*nodes[1][1] - *nodes[0][1]);
186 J(0, 1) = (*nodes[2][0] - *nodes[0][0]);
187 J(1, 1) = (*nodes[2][1] - *nodes[0][1]);
197 for (
int i = 0; i < m_derivUtil->pts; i++)
199 vector<NekDouble> r(10, 0.0);
201 r[9] = 1.0 / (J(0, 0) * J(1, 1) - J(0, 1) * J(1, 0));
212 mapsStd.push_back(r);
218 J(0, 0) = (*nodes[1][0] - *nodes[0][0]);
219 J(1, 0) = (*nodes[1][1] - *nodes[0][1]);
220 J(2, 0) = (*nodes[1][2] - *nodes[0][2]);
221 J(0, 1) = (*nodes[2][0] - *nodes[0][0]);
222 J(1, 1) = (*nodes[2][1] - *nodes[0][1]);
223 J(2, 1) = (*nodes[2][2] - *nodes[0][2]);
224 J(0, 2) = (*nodes[3][0] - *nodes[0][0]);
225 J(1, 2) = (*nodes[3][1] - *nodes[0][1]);
226 J(2, 2) = (*nodes[3][2] - *nodes[0][2]);
237 for (
int i = 0; i < m_derivUtil->pts; i++)
239 vector<NekDouble> r(10, 0.0);
241 r[9] = 1.0 / (J(0, 0) * (J(1, 1) * J(2, 2) - J(2, 1) * J(1, 2)) -
242 J(0, 1) * (J(1, 0) * J(2, 2) - J(2, 0) * J(1, 2)) +
243 J(0, 2) * (J(1, 0) * J(2, 1) - J(2, 0) * J(1, 1)));
255 mapsStd.push_back(r);
267 vector<vector<NekDouble> > xyz(6);
268 vector<NodeSharedPtr> ns = m_el->GetVertexList();
269 for (
int i = 0; i < 6; i++)
271 vector<NekDouble> x(3);
278 for (
int i = 0; i < m_derivUtil->ptsStd; ++i)
288 J(0, 0) = -0.5 * b1 * xyz[0][0] + 0.5 * b1 * xyz[1][0] +
289 0.5 * b2 * xyz[2][0] - 0.5 * b2 * xyz[3][0];
290 J(1, 0) = -0.5 * b1 * xyz[0][1] + 0.5 * b1 * xyz[1][1] +
291 0.5 * b2 * xyz[2][1] - 0.5 * b2 * xyz[3][1];
292 J(2, 0) = -0.5 * b1 * xyz[0][2] + 0.5 * b1 * xyz[1][2] +
293 0.5 * b2 * xyz[2][2] - 0.5 * b2 * xyz[3][2];
295 J(0, 1) = 0.5 * d * xyz[0][0] - 0.5 * a2 * xyz[1][0] +
296 0.5 * a2 * xyz[2][0] - 0.5 * d * xyz[3][0] -
297 0.5 * c2 * xyz[4][0] + 0.5 * c2 * xyz[5][0];
298 J(1, 1) = 0.5 * d * xyz[0][1] - 0.5 * a2 * xyz[1][1] +
299 0.5 * a2 * xyz[2][1] - 0.5 * d * xyz[3][1] -
300 0.5 * c2 * xyz[4][1] + 0.5 * c2 * xyz[5][1];
301 J(2, 1) = 0.5 * d * xyz[0][2] - 0.5 * a2 * xyz[1][2] +
302 0.5 * a2 * xyz[2][2] - 0.5 * d * xyz[3][2] -
303 0.5 * c2 * xyz[4][2] + 0.5 * c2 * xyz[5][2];
305 J(0, 2) = -0.5 * b1 * xyz[0][0] - 0.5 * b2 * xyz[3][0] +
306 0.5 * b1 * xyz[4][0] + 0.5 * b2 * xyz[5][0];
307 J(1, 2) = -0.5 * b1 * xyz[0][1] - 0.5 * b2 * xyz[3][1] +
308 0.5 * b1 * xyz[4][1] + 0.5 * b2 * xyz[5][1];
309 J(2, 2) = -0.5 * b1 * xyz[0][2] - 0.5 * b2 * xyz[3][2] +
310 0.5 * b1 * xyz[4][2] + 0.5 * b2 * xyz[5][2];
314 vector<NekDouble> r(10, 0.0);
316 r[9] = 1.0 / (J(0, 0) * (J(1, 1) * J(2, 2) - J(2, 1) * J(1, 2)) -
317 J(0, 1) * (J(1, 0) * J(2, 2) - J(2, 0) * J(1, 2)) +
318 J(0, 2) * (J(1, 0) * J(2, 1) - J(2, 0) * J(1, 1)));
329 mapsStd.push_back(r);
331 for (
int i = 0; i < m_derivUtil->pts; ++i)
341 J(0, 0) = -0.5 * b1 * xyz[0][0] + 0.5 * b1 * xyz[1][0] +
342 0.5 * b2 * xyz[2][0] - 0.5 * b2 * xyz[3][0];
343 J(1, 0) = -0.5 * b1 * xyz[0][1] + 0.5 * b1 * xyz[1][1] +
344 0.5 * b2 * xyz[2][1] - 0.5 * b2 * xyz[3][1];
345 J(2, 0) = -0.5 * b1 * xyz[0][2] + 0.5 * b1 * xyz[1][2] +
346 0.5 * b2 * xyz[2][2] - 0.5 * b2 * xyz[3][2];
348 J(0, 1) = 0.5 * d * xyz[0][0] - 0.5 * a2 * xyz[1][0] +
349 0.5 * a2 * xyz[2][0] - 0.5 * d * xyz[3][0] -
350 0.5 * c2 * xyz[4][0] + 0.5 * c2 * xyz[5][0];
351 J(1, 1) = 0.5 * d * xyz[0][1] - 0.5 * a2 * xyz[1][1] +
352 0.5 * a2 * xyz[2][1] - 0.5 * d * xyz[3][1] -
353 0.5 * c2 * xyz[4][1] + 0.5 * c2 * xyz[5][1];
354 J(2, 1) = 0.5 * d * xyz[0][2] - 0.5 * a2 * xyz[1][2] +
355 0.5 * a2 * xyz[2][2] - 0.5 * d * xyz[3][2] -
356 0.5 * c2 * xyz[4][2] + 0.5 * c2 * xyz[5][2];
358 J(0, 2) = -0.5 * b1 * xyz[0][0] - 0.5 * b2 * xyz[3][0] +
359 0.5 * b1 * xyz[4][0] + 0.5 * b2 * xyz[5][0];
360 J(1, 2) = -0.5 * b1 * xyz[0][1] - 0.5 * b2 * xyz[3][1] +
361 0.5 * b1 * xyz[4][1] + 0.5 * b2 * xyz[5][1];
362 J(2, 2) = -0.5 * b1 * xyz[0][2] - 0.5 * b2 * xyz[3][2] +
363 0.5 * b1 * xyz[4][2] + 0.5 * b2 * xyz[5][2];
367 vector<NekDouble> r(10, 0.0);
369 r[9] = 1.0 / (J(0, 0) * (J(1, 1) * J(2, 2) - J(2, 1) * J(1, 2)) -
370 J(0, 1) * (J(1, 0) * J(2, 2) - J(2, 0) * J(1, 2)) +
371 J(0, 2) * (J(1, 0) * J(2, 1) - J(2, 0) * J(1, 1)));
391 w1(m_derivUtil->ptsStd), u2(m_derivUtil->pts), v2(m_derivUtil->pts),
392 w2(m_derivUtil->pts);
397 vector<vector<NekDouble> > xyz(8);
398 vector<NodeSharedPtr> ns = m_el->GetVertexList();
399 for (
int i = 0; i < 8; i++)
401 vector<NekDouble> x(3);
408 for (
int i = 0; i < m_derivUtil->ptsStd; ++i)
419 J(0, 0) = -0.5 * b1 * c1 * xyz[0][0] + 0.5 * b1 * c1 * xyz[1][0] +
420 0.5 * b2 * c1 * xyz[2][0] - 0.5 * b2 * c1 * xyz[3][0] -
421 0.5 * b1 * c2 * xyz[5][0] + 0.5 * b1 * c2 * xyz[5][0] +
422 0.5 * b2 * c2 * xyz[6][0] - 0.5 * b2 * c2 * xyz[7][0];
423 J(1, 0) = -0.5 * b1 * c1 * xyz[0][1] + 0.5 * b1 * c1 * xyz[1][1] +
424 0.5 * b2 * c1 * xyz[2][1] - 0.5 * b2 * c1 * xyz[3][1] -
425 0.5 * b1 * c2 * xyz[5][1] + 0.5 * b1 * c2 * xyz[5][1] +
426 0.5 * b2 * c2 * xyz[6][1] - 0.5 * b2 * c2 * xyz[7][1];
427 J(2, 0) = -0.5 * b1 * c1 * xyz[0][2] + 0.5 * b1 * c1 * xyz[1][2] +
428 0.5 * b2 * c1 * xyz[2][2] - 0.5 * b2 * c1 * xyz[3][2] -
429 0.5 * b1 * c2 * xyz[5][2] + 0.5 * b1 * c2 * xyz[5][2] +
430 0.5 * b2 * c2 * xyz[6][2] - 0.5 * b2 * c2 * xyz[7][2];
432 J(0, 1) = -0.5 * a1 * c1 * xyz[0][0] - 0.5 * a2 * c1 * xyz[1][0] +
433 0.5 * a2 * c1 * xyz[2][0] + 0.5 * a1 * c1 * xyz[3][0] -
434 0.5 * a1 * c2 * xyz[5][0] - 0.5 * a2 * c2 * xyz[5][0] +
435 0.5 * a2 * c2 * xyz[6][0] + 0.5 * a1 * c2 * xyz[7][0];
436 J(1, 1) = -0.5 * a1 * c1 * xyz[0][1] - 0.5 * a2 * c1 * xyz[1][1] +
437 0.5 * a2 * c1 * xyz[2][1] + 0.5 * a1 * c1 * xyz[3][1] -
438 0.5 * a1 * c2 * xyz[5][1] - 0.5 * a2 * c2 * xyz[5][1] +
439 0.5 * a2 * c2 * xyz[6][1] + 0.5 * a1 * c2 * xyz[7][1];
440 J(2, 1) = -0.5 * a1 * c1 * xyz[0][2] - 0.5 * a2 * c1 * xyz[1][2] +
441 0.5 * a2 * c1 * xyz[2][2] + 0.5 * a1 * c1 * xyz[3][2] -
442 0.5 * a1 * c2 * xyz[5][2] - 0.5 * a2 * c2 * xyz[5][2] +
443 0.5 * a2 * c2 * xyz[6][2] + 0.5 * a1 * c2 * xyz[7][2];
445 J(0, 0) = -0.5 * b1 * a1 * xyz[0][0] - 0.5 * b1 * a2 * xyz[1][0] -
446 0.5 * b2 * a2 * xyz[2][0] - 0.5 * b2 * a1 * xyz[3][0] +
447 0.5 * b1 * a1 * xyz[5][0] + 0.5 * b1 * a2 * xyz[5][0] +
448 0.5 * b2 * a2 * xyz[6][0] + 0.5 * b2 * a1 * xyz[7][0];
449 J(1, 0) = -0.5 * b1 * a1 * xyz[0][1] - 0.5 * b1 * a2 * xyz[1][1] -
450 0.5 * b2 * a2 * xyz[2][1] - 0.5 * b2 * a1 * xyz[3][1] +
451 0.5 * b1 * a1 * xyz[5][1] + 0.5 * b1 * a2 * xyz[5][1] +
452 0.5 * b2 * a2 * xyz[6][1] + 0.5 * b2 * a1 * xyz[7][1];
453 J(2, 0) = -0.5 * b1 * a1 * xyz[0][2] - 0.5 * b1 * a2 * xyz[1][2] -
454 0.5 * b2 * a2 * xyz[2][2] - 0.5 * b2 * a1 * xyz[3][2] +
455 0.5 * b1 * a1 * xyz[5][2] + 0.5 * b1 * a2 * xyz[5][2] +
456 0.5 * b2 * a2 * xyz[6][2] + 0.5 * b2 * a1 * xyz[7][2];
460 vector<NekDouble> r(10, 0.0);
462 r[9] = 1.0 / (J(0, 0) * (J(1, 1) * J(2, 2) - J(2, 1) * J(1, 2)) -
463 J(0, 1) * (J(1, 0) * J(2, 2) - J(2, 0) * J(1, 2)) +
464 J(0, 2) * (J(1, 0) * J(2, 1) - J(2, 0) * J(1, 1)));
475 mapsStd.push_back(r);
478 for (
int i = 0; i < m_derivUtil->pts; ++i)
489 J(0, 0) = -0.5 * b1 * c1 * xyz[0][0] + 0.5 * b1 * c1 * xyz[1][0] +
490 0.5 * b2 * c1 * xyz[2][0] - 0.5 * b2 * c1 * xyz[3][0] -
491 0.5 * b1 * c2 * xyz[5][0] + 0.5 * b1 * c2 * xyz[5][0] +
492 0.5 * b2 * c2 * xyz[6][0] - 0.5 * b2 * c2 * xyz[7][0];
493 J(1, 0) = -0.5 * b1 * c1 * xyz[0][1] + 0.5 * b1 * c1 * xyz[1][1] +
494 0.5 * b2 * c1 * xyz[2][1] - 0.5 * b2 * c1 * xyz[3][1] -
495 0.5 * b1 * c2 * xyz[5][1] + 0.5 * b1 * c2 * xyz[5][1] +
496 0.5 * b2 * c2 * xyz[6][1] - 0.5 * b2 * c2 * xyz[7][1];
497 J(2, 0) = -0.5 * b1 * c1 * xyz[0][2] + 0.5 * b1 * c1 * xyz[1][2] +
498 0.5 * b2 * c1 * xyz[2][2] - 0.5 * b2 * c1 * xyz[3][2] -
499 0.5 * b1 * c2 * xyz[5][2] + 0.5 * b1 * c2 * xyz[5][2] +
500 0.5 * b2 * c2 * xyz[6][2] - 0.5 * b2 * c2 * xyz[7][2];
502 J(0, 1) = -0.5 * a1 * c1 * xyz[0][0] - 0.5 * a2 * c1 * xyz[1][0] +
503 0.5 * a2 * c1 * xyz[2][0] + 0.5 * a1 * c1 * xyz[3][0] -
504 0.5 * a1 * c2 * xyz[5][0] - 0.5 * a2 * c2 * xyz[5][0] +
505 0.5 * a2 * c2 * xyz[6][0] + 0.5 * a1 * c2 * xyz[7][0];
506 J(1, 1) = -0.5 * a1 * c1 * xyz[0][1] - 0.5 * a2 * c1 * xyz[1][1] +
507 0.5 * a2 * c1 * xyz[2][1] + 0.5 * a1 * c1 * xyz[3][1] -
508 0.5 * a1 * c2 * xyz[5][1] - 0.5 * a2 * c2 * xyz[5][1] +
509 0.5 * a2 * c2 * xyz[6][1] + 0.5 * a1 * c2 * xyz[7][1];
510 J(2, 1) = -0.5 * a1 * c1 * xyz[0][2] - 0.5 * a2 * c1 * xyz[1][2] +
511 0.5 * a2 * c1 * xyz[2][2] + 0.5 * a1 * c1 * xyz[3][2] -
512 0.5 * a1 * c2 * xyz[5][2] - 0.5 * a2 * c2 * xyz[5][2] +
513 0.5 * a2 * c2 * xyz[6][2] + 0.5 * a1 * c2 * xyz[7][2];
515 J(0, 0) = -0.5 * b1 * a1 * xyz[0][0] - 0.5 * b1 * a2 * xyz[1][0] -
516 0.5 * b2 * a2 * xyz[2][0] - 0.5 * b2 * a1 * xyz[3][0] +
517 0.5 * b1 * a1 * xyz[5][0] + 0.5 * b1 * a2 * xyz[5][0] +
518 0.5 * b2 * a2 * xyz[6][0] + 0.5 * b2 * a1 * xyz[7][0];
519 J(1, 0) = -0.5 * b1 * a1 * xyz[0][1] - 0.5 * b1 * a2 * xyz[1][1] -
520 0.5 * b2 * a2 * xyz[2][1] - 0.5 * b2 * a1 * xyz[3][1] +
521 0.5 * b1 * a1 * xyz[5][1] + 0.5 * b1 * a2 * xyz[5][1] +
522 0.5 * b2 * a2 * xyz[6][1] + 0.5 * b2 * a1 * xyz[7][1];
523 J(2, 0) = -0.5 * b1 * a1 * xyz[0][2] - 0.5 * b1 * a2 * xyz[1][2] -
524 0.5 * b2 * a2 * xyz[2][2] - 0.5 * b2 * a1 * xyz[3][2] +
525 0.5 * b1 * a1 * xyz[5][2] + 0.5 * b1 * a2 * xyz[5][2] +
526 0.5 * b2 * a2 * xyz[6][2] + 0.5 * b2 * a1 * xyz[7][2];
530 vector<NekDouble> r(10, 0.0);
532 r[9] = 1.0 / (J(0, 0) * (J(1, 1) * J(2, 2) - J(2, 1) * J(1, 2)) -
533 J(0, 1) * (J(1, 0) * J(2, 2) - J(2, 0) * J(1, 2)) +
534 J(0, 2) * (J(1, 0) * J(2, 1) - J(2, 0) * J(1, 1)));
554 void ElUtil::Evaluate()
556 NekDouble mx2 = -1.0 * numeric_limits<double>::max();
557 NekDouble mn2 = numeric_limits<double>::max();
559 ASSERTL0(nodes.size() == m_derivUtil->ptsStd,
"node count wrong");
560 const int nNodes = nodes.size();
564 std::vector<NekDouble> X(nNodes), Y(nNodes);
565 for (
int j = 0; j < nNodes; j++)
571 std::vector<NekDouble> x1i(nNodes), y1i(nNodes);
572 std::vector<NekDouble> x2i(nNodes), y2i(nNodes);
575 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[0].GetRawPtr(),
576 nNodes, &X[0], 1, 0.0, &x1i[0], 1.0);
578 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[0].GetRawPtr(),
579 nNodes, &Y[0], 1, 0.0, &y1i[0], 1.0);
581 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[1].GetRawPtr(),
582 nNodes, &X[0], 1, 0.0, &x2i[0], 1.0);
584 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[1].GetRawPtr(),
585 nNodes, &Y[0], 1, 0.0, &y2i[0], 1.0);
587 for (
int j = 0; j < nNodes; j++)
589 NekDouble jacDet = x1i[j] * y2i[j] - x2i[j] * y1i[j];
590 mx2 = max(mx2, jacDet / mapsStd[j][9]);
591 mn2 = min(mn2, jacDet / mapsStd[j][9]);
596 std::vector<NekDouble> X(nNodes), Y(nNodes), Z(nNodes);
597 for (
int j = 0; j < nNodes; j++)
603 std::vector<NekDouble> x1i2(nNodes), y1i2(nNodes), z1i2(nNodes);
604 std::vector<NekDouble> x2i2(nNodes), y2i2(nNodes), z2i2(nNodes);
605 std::vector<NekDouble> x3i2(nNodes), y3i2(nNodes), z3i2(nNodes);
608 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[0].GetRawPtr(),
609 nNodes, &X[0], 1, 0.0, &x1i2[0], 1.0);
611 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[0].GetRawPtr(),
612 nNodes, &Y[0], 1, 0.0, &y1i2[0], 1.0);
614 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[0].GetRawPtr(),
615 nNodes, &Z[0], 1, 0.0, &z1i2[0], 1.0);
617 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[1].GetRawPtr(),
618 nNodes, &X[0], 1, 0.0, &x2i2[0], 1.0);
620 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[1].GetRawPtr(),
621 nNodes, &Y[0], 1, 0.0, &y2i2[0], 1.0);
623 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[1].GetRawPtr(),
624 nNodes, &Z[0], 1, 0.0, &z2i2[0], 1.0);
626 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[2].GetRawPtr(),
627 nNodes, &X[0], 1, 0.0, &x3i2[0], 1.0);
629 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[2].GetRawPtr(),
630 nNodes, &Y[0], 1, 0.0, &y3i2[0], 1.0);
632 'N', nNodes, nNodes, 1.0, m_derivUtil->VdmDStd[2].GetRawPtr(),
633 nNodes, &Z[0], 1, 0.0, &z3i2[0], 1.0);
635 for (
int j = 0; j < nNodes; j++)
638 x1i2[j] * (y2i2[j] * z3i2[j] - z2i2[j] * y3i2[j]) -
639 x2i2[j] * (y1i2[j] * z3i2[j] - z1i2[j] * y3i2[j]) +
640 x3i2[j] * (y1i2[j] * z2i2[j] - z1i2[j] * y2i2[j]);
642 mx2 = max(mx2, jacDet / mapsStd[j][9]);
643 mn2 = min(mn2, jacDet / mapsStd[j][9]);
652 m_res->worstJac = min(m_res->worstJac, (mn2 / mx2));
655 m_scaledJac = (mn2 / mx2);
658 void ElUtil::InitialMinJac()
660 NekDouble mx = -1.0 * numeric_limits<double>::max();
661 NekDouble mn = numeric_limits<double>::max();
663 ASSERTL0(nodes.size() == m_derivUtil->ptsStd,
"node count wrong");
668 for (
int j = 0; j < nodes.size(); j++)
675 x2i2(m_derivUtil->pts), y2i2(m_derivUtil->pts);
677 x1i2 = m_derivUtil->VdmD[0] * X;
678 y1i2 = m_derivUtil->VdmD[0] * Y;
679 x2i2 = m_derivUtil->VdmD[1] * X;
680 y2i2 = m_derivUtil->VdmD[1] * Y;
682 for (
int j = 0; j < m_derivUtil->pts; j++)
684 NekDouble jacDet = x1i2(j) * y2i2(j) - x2i2(j) * y1i2(j);
685 jacDet /= maps[j][9];
686 mx = max(mx, jacDet);
687 mn = min(mn, jacDet);
693 for (
int j = 0; j < nodes.size(); j++)
701 z1i(m_derivUtil->pts), x2i(m_derivUtil->pts), y2i(m_derivUtil->pts),
702 z2i(m_derivUtil->pts), x3i(m_derivUtil->pts), y3i(m_derivUtil->pts),
703 z3i(m_derivUtil->pts);
705 x1i = m_derivUtil->VdmD[0] * X;
706 y1i = m_derivUtil->VdmD[0] * Y;
707 z1i = m_derivUtil->VdmD[0] * Z;
708 x2i = m_derivUtil->VdmD[1] * X;
709 y2i = m_derivUtil->VdmD[1] * Y;
710 z2i = m_derivUtil->VdmD[1] * Z;
711 x3i = m_derivUtil->VdmD[2] * X;
712 y3i = m_derivUtil->VdmD[2] * Y;
713 z3i = m_derivUtil->VdmD[2] * Z;
715 for (
int j = 0; j < m_derivUtil->pts; j++)
730 (dxdz(1, 1) * dxdz(2, 2) - dxdz(2, 1) * dxdz(1, 2)) -
732 (dxdz(1, 0) * dxdz(2, 2) - dxdz(2, 0) * dxdz(1, 2)) +
734 (dxdz(1, 0) * dxdz(2, 1) - dxdz(2, 0) * dxdz(1, 1));
736 mx = max(mx, jacDet);
737 mn = min(mn, jacDet);
std::shared_ptr< DerivUtil > DerivUtilSharedPtr
#define ASSERTL0(condition, msg)
vector< DNekMat > MappingIdealToRef(SpatialDomains::GeometrySharedPtr geom, StdRegions::StdExpansionSharedPtr chi)
std::shared_ptr< Residual > ResidualSharedPtr
std::shared_ptr< Element > ElementSharedPtr
PointsManagerT & PointsManager(void)
Defines a specification for a set of points.
static void Dgemv(const char &trans, const int &m, const int &n, const double &alpha, const double *a, const int &lda, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = A x where A[m x n].
3D electrostatically spaced points on a Prism