33 const std::vector<double> &v)
35 return u[0] * v[0] + u[1] * v[1];
50 case(1):
return 0.5 * (1 + v);
51 case(2):
return -0.5 * (u + v);
52 case(3):
return 0.5 * (1 + u);
53 default:
throw std::runtime_error(
"j must be : 1<=j<=3");
58 double const &u,
double const &v,
double const &w,
59 std::vector<std::vector<double> > &edgeBasis,
60 std::vector<std::vector<double> > &faceBasis,
61 std::vector<std::vector<double> > &bubbleBasis)
65 double uc = 2 * u - 1;
66 double vc = 2 * v - 1;
72 std::vector<double> t1 = std::vector<double>(3, 0);
74 std::vector<double> t2 = std::vector<double>(3, 0);
77 std::vector<double> t3 = std::vector<double>(3, 0);
79 std::vector<double> n1 = std::vector<double>(3, 0);
81 std::vector<double> n2 = std::vector<double>(3, 0);
84 std::vector<double> n3 = std::vector<double>(3, 0);
87 std::vector<std::vector<double> > psie_0(3, std::vector<double>(3, 0));
88 std::vector<std::vector<double> > psie_1(3, std::vector<double>(3, 0));
89 for(
int i = 0; i < 3; i++) {
90 psie_0[0][i] = lambda3 * n2[i] /
dotProduct(n2, t1) +
92 psie_0[1][i] = lambda1 * n3[i] /
dotProduct(n3, t2) +
94 psie_0[2][i] = lambda2 * n1[i] /
dotProduct(n1, t3) +
97 psie_1[0][i] = lambda3 * n2[i] /
dotProduct(n2, t1) -
99 psie_1[1][i] = lambda1 * n3[i] /
dotProduct(n3, t2) -
101 psie_1[2][i] = lambda2 * n1[i] /
dotProduct(n1, t3) -
104 double subl3l2 = lambda3 - lambda2;
105 double subl1l3 = lambda1 - lambda3;
106 double subl2l1 = lambda2 - lambda1;
107 std::vector<std::vector<double> > legendreVector(3);
109 std::vector<double>(std::max(std::max(
_pOrderEdge[0],
_pf - 1), 0));
111 std::vector<double>(std::max(std::max(
_pOrderEdge[1],
_pf - 1), 0));
113 std::vector<double>(std::max(std::max(
_pOrderEdge[2],
_pf - 1), 0));
114 for(
unsigned int k = 0; k < legendreVector[0].size(); k++) {
117 for(
unsigned int k = 0; k < legendreVector[1].size(); k++) {
120 for(
unsigned int k = 0; k < legendreVector[2].size(); k++) {
125 for(
int i = 0; i <
_nedge; i++) {
126 for(
int j = 0; j < 3; j++) { edgeBasis[edgeIt][j] = jacob * psie_0[i][j]; }
129 for(
int j = 0; j < 3; j++) {
130 edgeBasis[edgeIt][j] = jacob * psie_1[i][j];
134 for(
int iedge = 2; iedge <=
_pOrderEdge[i]; iedge++) {
135 for(
int j = 0; j < 3; j++) {
136 edgeBasis[edgeIt][j] =
137 jacob * ((2 * float(iedge) - 1) /
float(iedge) *
138 legendreVector[i][iedge - 1] * psie_1[i][j] -
139 (float(iedge) - 1) /
float(iedge) *
140 legendreVector[i][iedge - 2] * psie_0[i][j]);
146 std::vector<double> nD(3, 0);
149 product = lambda3 * lambda2;
153 product = lambda1 * lambda3;
158 product = lambda1 * lambda2;
162 for(
int i1 = 2; i1 <=
_pf; i1++) {
163 for(
int j = 0; j < 3; j++) {
164 faceBasis[faceIt][j] =
165 jacob * product * legendreVector[i][i1 - 2] * nD[j];
170 double product = lambda1 * lambda2 * lambda3;
171 int faceIt2 = faceIt;
172 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
173 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
174 faceBasis[faceIt][0] =
175 0.5 * jacob * (product * legendreVector[0][n1] * legendreVector[2][n2]);
176 faceBasis[faceIt][1] = 0;
177 faceBasis[faceIt][2] = 0;
181 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
182 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
183 faceBasis[faceIt][0] = 0;
184 faceBasis[faceIt][1] = faceBasis[faceIt2][0];
185 faceBasis[faceIt][2] = 0;
193 int const &flagOrientation,
int const &edgeNumber,
194 std::vector<std::vector<double> > &edgeFunctions,
195 const std::vector<std::vector<double> > &eTablePositiveFlag,
196 const std::vector<std::vector<double> > &eTableNegativeFlag)
198 if(flagOrientation == -1) {
201 for(
int i = 0; i <= edgeNumber; i++) { constant2 +=
_pOrderEdge[i] + 1; }
202 constant2 = constant2 - 1;
204 for(
int k = constant1; k <= constant2; k++) {
205 edgeFunctions[k][0] = eTableNegativeFlag[k][0];
206 edgeFunctions[k][1] = eTableNegativeFlag[k][1];
207 edgeFunctions[k][2] = eTableNegativeFlag[k][2];
213 for(
int i = 0; i <= edgeNumber; i++) { constant2 +=
_pOrderEdge[i] + 1; }
214 constant2 = constant2 - 1;
216 for(
int k = constant1; k <= constant2; k++) {
217 edgeFunctions[k][0] = eTablePositiveFlag[k][0];
218 edgeFunctions[k][1] = eTablePositiveFlag[k][1];
219 edgeFunctions[k][2] = eTablePositiveFlag[k][2];
224 std::vector<std::vector<double> > &edgeFunctions)
228 for(
int edgeNumber = 0; edgeNumber <
_nedge; edgeNumber++) {
231 for(
int i = 0; i <= edgeNumber; i++) { constant2 +=
_pOrderEdge[i] + 1; }
232 constant2 = constant2 - 1;
234 for(
int k = constant1; k <= constant2; k++) {
235 if((k - constant1) % 2 == 0) {
236 edgeFunctions[k][0] = edgeFunctions[k][0] * (-1);
237 edgeFunctions[k][1] = edgeFunctions[k][1] * (-1);
238 edgeFunctions[k][2] = edgeFunctions[k][2] * (-1);
245 double const &u,
double const &v,
double const &w,
246 std::vector<std::vector<double> > &edgeBasis,
247 std::vector<std::vector<double> > &faceBasis,
248 std::vector<std::vector<double> > &bubbleBasis)
252 double uc = 2 * u - 1;
253 double vc = 2 * v - 1;
259 std::vector<double> t1 = std::vector<double>(3, 0);
261 std::vector<double> t2 = std::vector<double>(3, 0);
264 std::vector<double> t3 = std::vector<double>(3, 0);
266 std::vector<double> n1 = std::vector<double>(3, 0);
268 std::vector<double> n2 = std::vector<double>(3, 0);
271 std::vector<double> n3 = std::vector<double>(3, 0);
274 std::vector<std::vector<double> > psie_0(3, std::vector<double>(3, 0));
275 std::vector<std::vector<double> > psie_1(3, std::vector<double>(3, 0));
276 for(
int i = 0; i < 3; i++) {
277 psie_0[0][i] = lambda3 * n2[i] /
dotProduct(n2, t1) +
279 psie_0[1][i] = lambda1 * n3[i] /
dotProduct(n3, t2) +
281 psie_0[2][i] = lambda2 * n1[i] /
dotProduct(n1, t3) +
284 psie_1[0][i] = lambda3 * n2[i] /
dotProduct(n2, t1) -
286 psie_1[1][i] = lambda1 * n3[i] /
dotProduct(n3, t2) -
288 psie_1[2][i] = lambda2 * n1[i] /
dotProduct(n1, t3) -
291 std::vector<double> curlpsie_0(3);
292 std::vector<double> curlpsie_1(3);
299 std::vector<double> subtraction(3, 0);
300 subtraction[0] = lambda3 - lambda2;
301 subtraction[1] = lambda1 - lambda3;
302 subtraction[2] = lambda2 - lambda1;
303 std::vector<std::vector<double> > dsubtraction(3, std::vector<double>(2, 0));
304 dsubtraction[0][0] = 1;
305 dsubtraction[0][1] = 0.5;
306 dsubtraction[1][0] = -0.5;
307 dsubtraction[1][1] = 0.5;
308 dsubtraction[2][0] = -0.5;
309 dsubtraction[2][1] = -1;
310 std::vector<std::vector<double> > legendreVector(3);
312 std::vector<double>(std::max(std::max(
_pOrderEdge[0],
_pf - 1), 0));
314 std::vector<double>(std::max(std::max(
_pOrderEdge[1],
_pf - 1), 0));
316 std::vector<double>(std::max(std::max(
_pOrderEdge[2],
_pf - 1), 0));
317 std::vector<std::vector<double> > dlegendreVector(3);
319 std::vector<double>(std::max(std::max(
_pOrderEdge[0],
_pf - 1), 0));
321 std::vector<double>(std::max(std::max(
_pOrderEdge[1],
_pf - 1), 0));
323 std::vector<double>(std::max(std::max(
_pOrderEdge[2],
_pf - 1), 0));
324 for(
unsigned int k = 0; k < legendreVector[0].size(); k++) {
328 for(
unsigned int k = 0; k < legendreVector[1].size(); k++) {
332 for(
unsigned int k = 0; k < legendreVector[2].size(); k++) {
338 for(
int i = 0; i <
_nedge; i++) {
339 edgeBasis[edgeIt][2] = det * curlpsie_0[i];
342 edgeBasis[edgeIt][2] = det * curlpsie_1[i];
345 for(
int iedge = 2; iedge <=
_pOrderEdge[i]; iedge++) {
346 edgeBasis[edgeIt][2] =
347 det * ((2 * float(iedge) - 1) /
float(iedge) *
348 (dsubtraction[i][0] * dlegendreVector[i][iedge - 1] *
350 dsubtraction[i][1] * dlegendreVector[i][iedge - 1] *
352 (
float(iedge) - 1) /
float(iedge) *
353 (curlpsie_0[i] * legendreVector[i][iedge - 2] +
354 dsubtraction[i][0] * dlegendreVector[i][iedge - 2] *
356 dsubtraction[i][1] * dlegendreVector[i][iedge - 2] *
364 double dlambda23 = 0.5 * (lambda2 - lambda3);
365 double prod32 = lambda3 * lambda2;
366 for(
int n1 = 2; n1 <=
_pf; n1++) {
367 faceBasis[faceIt][2] =
369 (dlambda23 * legendreVector[0][n1 - 2] +
370 prod32 * dsubtraction[0][0] * dlegendreVector[0][n1 - 2]);
374 double dlambda13U = 0.5 * (lambda1);
375 double dlambda13V = 0.5 * (lambda3);
376 double prod13 = lambda3 * lambda1;
377 for(
int n1 = 2; n1 <=
_pf; n1++) {
378 faceBasis[faceIt][2] =
380 (dlambda13U * legendreVector[1][n1 - 2] +
381 prod13 * dsubtraction[1][0] * dlegendreVector[1][n1 - 2] -
382 (dlambda13V * legendreVector[1][n1 - 2] +
383 prod13 * dsubtraction[1][1] * dlegendreVector[1][n1 - 2]));
387 double dlambda12 = 0.5 * (lambda2 - lambda1);
388 double prod12 = lambda2 * lambda1;
389 for(
int n1 = 2; n1 <=
_pf; n1++) {
390 faceBasis[faceIt][2] =
392 (dlambda12 * legendreVector[2][n1 - 2] +
393 prod12 * dsubtraction[2][1] * dlegendreVector[2][n1 - 2]);
397 double prod123 = lambda1 * lambda2 * lambda3;
398 double dlambda123U = 0.5 * lambda1 * (lambda2 - lambda3);
399 double dlambda123V = 0.5 * lambda3 * (lambda2 - lambda1);
400 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
401 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
402 faceBasis[faceIt][2] =
404 (dlambda123V * legendreVector[0][n1] * legendreVector[2][n2] +
405 prod123 * dsubtraction[0][1] * dlegendreVector[0][n1] *
406 legendreVector[2][n2] +
407 prod123 * dsubtraction[2][1] * legendreVector[0][n1] *
408 dlegendreVector[2][n2]);
413 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
414 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
415 faceBasis[faceIt][2] =
417 (dlambda123U * legendreVector[0][n1] * legendreVector[2][n2] +
418 prod123 * dsubtraction[0][0] * dlegendreVector[0][n1] *
419 legendreVector[2][n2] +
420 prod123 * dsubtraction[2][0] * legendreVector[0][n1] *
421 dlegendreVector[2][n2]);
428 double const &u,
double const &v,
double const &w,
int const &flag1,
429 int const &flag2,
int const &flag3,
int const &faceNumber,
430 std::vector<std::vector<double> > &faceFunctions, std::string typeFunction)
432 if(!(flag1 == 0 && flag2 == 1)) {
433 if(typeFunction ==
"HcurlLegendre") {
435 double uc = 2 * u - 1;
436 double vc = 2 * v - 1;
441 std::vector<double> lambda(3, 0);
445 std::vector<std::vector<double> > dlambda(3, std::vector<double>(2, 0));
446 dlambda[0][0] = -0.5;
447 dlambda[0][1] = -0.5;
450 double product = lambda[0] * lambda[1] * lambda[2];
451 if(flag1 == 1 && flag2 == -1) {
452 double copy = lambda[0];
453 lambda[0] = lambda[1];
455 std::vector<double> dcopy = dlambda[0];
456 dlambda[0] = dlambda[1];
459 else if(flag1 == 0 && flag2 == -1) {
460 double copy = lambda[2];
461 lambda[2] = lambda[1];
463 std::vector<double> dcopy = dlambda[2];
464 dlambda[2] = dlambda[1];
467 else if(flag1 == 2 && flag2 == -1) {
468 double copy = lambda[2];
469 lambda[2] = lambda[0];
471 std::vector<double> dcopy = dlambda[2];
472 dlambda[2] = dlambda[0];
475 else if(flag1 == 1 && flag2 == 1) {
476 double copy = lambda[0];
477 lambda[0] = lambda[1];
478 lambda[1] = lambda[2];
480 std::vector<double> dcopy = dlambda[0];
481 dlambda[0] = dlambda[1];
482 dlambda[1] = dlambda[2];
485 else if(flag1 == 2 && flag2 == 1) {
486 double copy = lambda[0];
487 lambda[0] = lambda[2];
488 lambda[2] = lambda[1];
490 std::vector<double> dcopy = dlambda[0];
491 dlambda[0] = dlambda[2];
492 dlambda[2] = dlambda[1];
495 std::vector<double> sub(3);
496 sub[0] = lambda[1] - lambda[0];
497 sub[1] = lambda[2] - lambda[1];
498 sub[2] = lambda[0] - lambda[2];
499 std::vector<double> n1 = std::vector<double>(2, 0);
500 n1[0] = dlambda[2][0];
501 n1[1] = dlambda[2][1];
502 std::vector<double> n2 = std::vector<double>(2, 0);
503 n2[0] = dlambda[0][0];
504 n2[1] = dlambda[0][1];
505 std::vector<double> n3 = std::vector<double>(2, 0);
506 n3[0] = dlambda[1][0];
507 n3[1] = dlambda[1][1];
509 for(
int i = 0; i < 3; i++) {
511 std::vector<double> *normal(
nullptr);
514 product2 = lambda[1] * lambda[0];
518 product2 = lambda[1] * lambda[2];
522 product2 = lambda[2] * lambda[0];
526 for(
int i1 = 2; i1 <=
_pf; i1++) {
527 for(
int j = 0; j < 2; j++) {
528 faceFunctions[faceIt][j] =
532 faceFunctions[faceIt][2] = 0;
536 double sub1 = sub[0];
537 double sub2 = sub[2];
538 std::vector<double> LSub2(
_pf - 2);
539 for(
int it = 0; it <
_pf - 2; it++) {
542 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
544 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
545 faceFunctions[faceIt][0] =
546 jacob * product * LSub1 * LSub2[n2] * dlambda[1][0];
547 faceFunctions[faceIt][1] =
548 jacob * product * LSub1 * LSub2[n2] * dlambda[1][1];
552 int faceIt2 = 3 * (
_pf - 1);
553 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
555 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
556 faceFunctions[faceIt][0] =
557 jacob * product * LSub1 * LSub2[n2] * dlambda[2][0];
558 faceFunctions[faceIt][1] =
559 jacob * product * LSub1 * LSub2[n2] * dlambda[2][1];
565 else if(
"CurlHcurlLegendre" == typeFunction) {
567 double uc = 2 * u - 1;
568 double vc = 2 * v - 1;
572 std::vector<double> lambda(3);
573 std::vector<std::vector<double> > dlambda(3, std::vector<double>(2, 0));
574 std::vector<double> dProduct(2);
578 dlambda[0][0] = -0.5;
579 dlambda[0][1] = -0.5;
582 dProduct[0] = 0.5 * lambda[2] * (lambda[0] - lambda[1]);
583 dProduct[1] = 0.5 * lambda[1] * (lambda[0] - lambda[2]);
584 double product = lambda[0] * lambda[1] * lambda[2];
585 if(flag1 == 1 && flag2 == -1) {
586 double copy = lambda[0];
587 lambda[0] = lambda[1];
589 std::vector<double> dcopy = dlambda[0];
590 dlambda[0] = dlambda[1];
593 else if(flag1 == 0 && flag2 == -1) {
594 double copy = lambda[2];
595 lambda[2] = lambda[1];
597 std::vector<double> dcopy = dlambda[2];
598 dlambda[2] = dlambda[1];
601 else if(flag1 == 2 && flag2 == -1) {
602 double copy = lambda[2];
603 lambda[2] = lambda[0];
605 std::vector<double> dcopy = dlambda[2];
606 dlambda[2] = dlambda[0];
609 else if(flag1 == 1 && flag2 == 1) {
610 double copy = lambda[0];
611 lambda[0] = lambda[1];
612 lambda[1] = lambda[2];
614 std::vector<double> dcopy = dlambda[0];
615 dlambda[0] = dlambda[1];
616 dlambda[1] = dlambda[2];
619 else if(flag1 == 2 && flag2 == 1) {
620 double copy = lambda[0];
621 lambda[0] = lambda[2];
622 lambda[2] = lambda[1];
624 std::vector<double> dcopy = dlambda[0];
625 dlambda[0] = dlambda[2];
626 dlambda[2] = dlambda[1];
629 std::vector<double> sub(3);
630 sub[0] = lambda[1] - lambda[0];
631 sub[1] = lambda[2] - lambda[1];
632 sub[2] = lambda[0] - lambda[2];
633 std::vector<double> n1 = std::vector<double>(2, 0);
634 n1[0] = dlambda[2][0];
635 n1[1] = dlambda[2][1];
636 std::vector<double> n2 = std::vector<double>(2, 0);
637 n2[0] = dlambda[0][0];
638 n2[1] = dlambda[0][1];
639 std::vector<double> n3 = std::vector<double>(2, 0);
640 n3[0] = dlambda[1][0];
641 n3[1] = dlambda[1][1];
642 std::vector<std::vector<double> > dsub(3, std::vector<double>(2, 0));
643 for(
int p = 0; p < 2; p++) {
644 dsub[0][p] = dlambda[1][p] - dlambda[0][p];
645 dsub[1][p] = dlambda[2][p] - dlambda[1][p];
646 dsub[2][p] = dlambda[0][p] - dlambda[2][p];
649 double dlambda23U = dlambda[0][0] * lambda[1] + dlambda[1][0] * lambda[0];
650 double dlambda23V = dlambda[0][1] * lambda[1] + dlambda[1][1] * lambda[0];
651 double prod32 = lambda[0] * lambda[1];
652 for(
int i1 = 2; i1 <=
_pf; i1++) {
659 faceFunctions[faceIt][0] = 0;
660 faceFunctions[faceIt][1] = 0;
661 faceFunctions[faceIt][2] = det * (n1[1] * dphiU - n1[0] * dphiV);
664 double dlambda13U = dlambda[2][0] * lambda[1] + dlambda[1][0] * lambda[2];
665 double dlambda13V = dlambda[2][1] * lambda[1] + dlambda[1][1] * lambda[2];
666 double prod13 = lambda[2] * lambda[1];
667 for(
int i1 = 2; i1 <=
_pf; i1++) {
674 faceFunctions[faceIt][0] = 0;
675 faceFunctions[faceIt][1] = 0;
676 faceFunctions[faceIt][2] = det * (n2[1] * dphiU - n2[0] * dphiV);
679 double dlambda12U = dlambda[2][0] * lambda[0] + dlambda[0][0] * lambda[2];
680 double dlambda12V = dlambda[2][1] * lambda[0] + dlambda[0][1] * lambda[2];
681 double prod12 = lambda[0] * lambda[2];
682 for(
int i1 = 2; i1 <=
_pf; i1++) {
689 faceFunctions[faceIt][0] = 0;
690 faceFunctions[faceIt][1] = 0;
691 faceFunctions[faceIt][2] = det * (n3[1] * dphiU - n3[0] * dphiV);
695 double subBA = sub[0];
696 double subAC = sub[2];
697 std::vector<double> dsubBA(2);
698 std::vector<double> dsubAC(2);
699 for(
int i = 0; i < 2; i++) {
700 dsubBA[i] = dsub[0][i];
701 dsubAC[i] = dsub[2][i];
703 std::vector<double> LSubAC(
_pf - 2);
704 std::vector<double> dLSubAC(
_pf - 2);
705 for(
int it = 0; it <
_pf - 2; it++) {
709 std::vector<double> LSubBA(
_pf - 2);
710 std::vector<double> dLSubBA(
_pf - 2);
711 for(
int it = 0; it <
_pf - 2; it++) {
716 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
717 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
718 faceFunctions[faceIt][2] =
720 ((dProduct[0] * LSubAC[n2] * LSubBA[n1] +
721 product * dsubBA[0] * LSubAC[n2] * dLSubBA[n1] +
722 product * dsubAC[0] * dLSubAC[n2] * LSubBA[n1]) *
724 dlambda[1][0] * (dProduct[1] * LSubAC[n2] * LSubBA[n1] +
725 product * dsubBA[1] * LSubAC[n2] * dLSubBA[n1] +
726 product * dsubAC[1] * dLSubAC[n2] * LSubBA[n1]));
731 for(
int n1 = 0; n1 <
_pf - 2; n1++) {
732 for(
int n2 = 0; n2 <
_pf - 2 - n1; n2++) {
733 faceFunctions[faceIt][2] =
735 ((dProduct[0] * LSubAC[n2] * LSubBA[n1] +
736 product * dsubBA[0] * LSubAC[n2] * dLSubBA[n1] +
737 product * dsubAC[0] * dLSubAC[n2] * LSubBA[n1]) *
739 dlambda[2][0] * (dProduct[1] * LSubAC[n2] * LSubBA[n1] +
740 product * dsubBA[1] * LSubAC[n2] * dLSubBA[n1] +
741 product * dsubAC[1] * dLSubAC[n2] * LSubBA[n1]));
747 throw std::runtime_error(
"unknown typeFunction");
752 int const &flag1,
int const &flag2,
int const &flag3,
int const &faceNumber,
753 const std::vector<std::vector<double> > &quadFaceFunctionsAllOrientation,
754 const std::vector<std::vector<double> > &triFaceFunctionsAllOrientation,
755 std::vector<std::vector<double> > &fTableCopy)
760 fTableCopy[i][0] = triFaceFunctionsAllOrientation[i + offset][0];
761 fTableCopy[i][1] = triFaceFunctionsAllOrientation[i + offset][1];
762 fTableCopy[i][2] = triFaceFunctionsAllOrientation[i + offset][2];
767 std::vector<int> &orderInfo)
770 for(
int numEdge = 0; numEdge < 3; numEdge++) {
772 functionTypeInfo[it] = 1;
777 for(
int numEdge = 0; numEdge < 3; numEdge++) {
778 for(
int i = 2; i <=
_pf; i++) {
779 functionTypeInfo[it] = 2;
784 for(
int n1 = 1; n1 <
_pf - 1; n1++) {
785 for(
int n2 = 1; n2 <=
_pf - 1 - n1; n2++) {
786 functionTypeInfo[it] = 2;
787 orderInfo[it] = n1 + n2 + 1;
791 for(
int n1 = 1; n1 <
_pf - 1; n1++) {
792 for(
int n2 = 1; n2 <=
_pf - 1 - n1; n2++) {
793 functionTypeInfo[it] = 2;
794 orderInfo[it] = n1 + n2 + 1;