/[escript]/branches/diaplayground/ripley/src/Brick.cpp
ViewVC logotype

Diff of /branches/diaplayground/ripley/src/Brick.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3706 by caltinay, Mon Dec 5 01:59:08 2011 UTC revision 3707 by caltinay, Mon Dec 5 05:48:25 2011 UTC
# Line 331  void Brick::setToGradient(escript::Data& Line 331  void Brick::setToGradient(escript::Data&
331          const double tmp0_46 = -0.16666666666666666667/h2;          const double tmp0_46 = -0.16666666666666666667/h2;
332          const double tmp0_7 = -0.044658198738520451079/h0;          const double tmp0_7 = -0.044658198738520451079/h0;
333  #pragma omp parallel for  #pragma omp parallel for
334          for (index_t k2 =0; k2 < m_NE2; ++k2) {          for (index_t k2=0; k2 < m_NE2; ++k2) {
335              for (index_t k1 =0; k1 < m_NE1; ++k1) {              for (index_t k1=0; k1 < m_NE1; ++k1) {
336                  for (index_t k0 =0; k0 < m_NE0; ++k0) {                  for (index_t k0=0; k0 < m_NE0; ++k0) {
337                      const register double* f_000 = in.getSampleDataRO(INDEX3(k0,k1,k2, m_N0,m_N1));                      const register double* f_000 = in.getSampleDataRO(INDEX3(k0,k1,k2, m_N0,m_N1));
338                      const register double* f_001 = in.getSampleDataRO(INDEX3(k0,k1,k2+1, m_N0,m_N1));                      const register double* f_001 = in.getSampleDataRO(INDEX3(k0,k1,k2+1, m_N0,m_N1));
339                      const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,k2+1, m_N0,m_N1));                      const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,k2+1, m_N0,m_N1));
# Line 373  void Brick::setToGradient(escript::Data& Line 373  void Brick::setToGradient(escript::Data&
373              } /* end of k1 loop */              } /* end of k1 loop */
374          } /* end of k2 loop */          } /* end of k2 loop */
375          /* GENERATOR SNIP_GRAD_ELEMENTS BOTTOM */          /* GENERATOR SNIP_GRAD_ELEMENTS BOTTOM */
376        } else if (out.getFunctionSpace().getTypeCode() == FaceElements) {
377            /* GENERATOR SNIP_GRAD_FACES TOP */
378            if (m_faceOffset[0] > -1) {
379                const double tmp0_22 = 0.21132486540518711775/h1;
380                const double tmp0_16 = 0.16666666666666666667/h0;
381                const double tmp0_33 = 0.21132486540518711775/h2;
382                const double tmp0_0 = -0.62200846792814621559/h0;
383                const double tmp0_21 = -0.21132486540518711775/h1;
384                const double tmp0_17 = 0.62200846792814621559/h0;
385                const double tmp0_1 = -0.16666666666666666667/h0;
386                const double tmp0_20 = -0.78867513459481288225/h1;
387                const double tmp0_14 = -0.044658198738520451079/h0;
388                const double tmp0_2 = 0.16666666666666666667/h0;
389                const double tmp0_27 = 0.21132486540518711775/h1;
390                const double tmp0_15 = -0.16666666666666666667/h0;
391                const double tmp0_3 = 0.044658198738520451079/h0;
392                const double tmp0_26 = 0.78867513459481288225/h1;
393                const double tmp0_12 = -0.62200846792814621559/h0;
394                const double tmp0_25 = -0.78867513459481288225/h1;
395                const double tmp0_13 = 0.16666666666666666667/h0;
396                const double tmp0_24 = -0.21132486540518711775/h1;
397                const double tmp0_10 = 0.62200846792814621559/h0;
398                const double tmp0_11 = -0.16666666666666666667/h0;
399                const double tmp0_34 = 0.78867513459481288225/h2;
400                const double tmp0_35 = -0.78867513459481288225/h2;
401                const double tmp0_8 = 0.044658198738520451079/h0;
402                const double tmp0_29 = 0.78867513459481288225/h2;
403                const double tmp0_9 = 0.16666666666666666667/h0;
404                const double tmp0_30 = 0.21132486540518711775/h2;
405                const double tmp0_28 = -0.78867513459481288225/h2;
406                const double tmp0_32 = -0.21132486540518711775/h2;
407                const double tmp0_31 = -0.21132486540518711775/h2;
408                const double tmp0_18 = -0.62200846792814621559/h0;
409                const double tmp0_4 = -0.044658198738520451079/h0;
410                const double tmp0_19 = 0.044658198738520451079/h0;
411                const double tmp0_5 = 0.62200846792814621559/h0;
412                const double tmp0_6 = -0.16666666666666666667/h0;
413                const double tmp0_23 = 0.78867513459481288225/h1;
414                const double tmp0_7 = -0.044658198738520451079/h0;
415    #pragma omp parallel for
416                for (index_t k2=0; k2 < m_NE2; ++k2) {
417                    for (index_t k1=0; k1 < m_NE1; ++k1) {
418                        const register double* f_000 = in.getSampleDataRO(INDEX3(0,k1,k2, m_N0,m_N1));
419                        const register double* f_001 = in.getSampleDataRO(INDEX3(0,k1,k2+1, m_N0,m_N1));
420                        const register double* f_101 = in.getSampleDataRO(INDEX3(1,k1,k2+1, m_N0,m_N1));
421                        const register double* f_111 = in.getSampleDataRO(INDEX3(1,k1+1,k2+1, m_N0,m_N1));
422                        const register double* f_110 = in.getSampleDataRO(INDEX3(1,k1+1,k2, m_N0,m_N1));
423                        const register double* f_011 = in.getSampleDataRO(INDEX3(0,k1+1,k2+1, m_N0,m_N1));
424                        const register double* f_010 = in.getSampleDataRO(INDEX3(0,k1+1,k2, m_N0,m_N1));
425                        const register double* f_100 = in.getSampleDataRO(INDEX3(1,k1,k2, m_N0,m_N1));
426                        double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE1));
427                        for (index_t i=0; i < numComp; ++i) {
428                            o[INDEX3(i,0,0,numComp,3)] = f_000[i]*tmp0_0 + f_011[i]*tmp0_4 + f_100[i]*tmp0_5 + f_111[i]*tmp0_3 + tmp0_1*(f_001[i] + f_010[i]) + tmp0_2*(f_101[i] + f_110[i]);
429                            o[INDEX3(i,1,0,numComp,3)] = f_000[i]*tmp0_20 + f_001[i]*tmp0_21 + f_010[i]*tmp0_23 + f_011[i]*tmp0_22;
430                            o[INDEX3(i,2,0,numComp,3)] = f_000[i]*tmp0_28 + f_001[i]*tmp0_29 + f_010[i]*tmp0_31 + f_011[i]*tmp0_30;
431                            o[INDEX3(i,0,1,numComp,3)] = f_000[i]*tmp0_6 + f_001[i]*tmp0_7 + f_010[i]*tmp0_12 + f_011[i]*tmp0_11 + f_100[i]*tmp0_13 + f_101[i]*tmp0_8 + f_110[i]*tmp0_10 + f_111[i]*tmp0_9;
432                            o[INDEX3(i,1,1,numComp,3)] = f_000[i]*tmp0_20 + f_001[i]*tmp0_21 + f_010[i]*tmp0_23 + f_011[i]*tmp0_22;
433                            o[INDEX3(i,2,1,numComp,3)] = f_000[i]*tmp0_32 + f_001[i]*tmp0_33 + f_010[i]*tmp0_35 + f_011[i]*tmp0_34;
434                            o[INDEX3(i,0,2,numComp,3)] = f_000[i]*tmp0_6 + f_001[i]*tmp0_12 + f_010[i]*tmp0_7 + f_011[i]*tmp0_11 + f_100[i]*tmp0_13 + f_101[i]*tmp0_10 + f_110[i]*tmp0_8 + f_111[i]*tmp0_9;
435                            o[INDEX3(i,1,2,numComp,3)] = f_000[i]*tmp0_24 + f_001[i]*tmp0_25 + f_010[i]*tmp0_27 + f_011[i]*tmp0_26;
436                            o[INDEX3(i,2,2,numComp,3)] = f_000[i]*tmp0_28 + f_001[i]*tmp0_29 + f_010[i]*tmp0_31 + f_011[i]*tmp0_30;
437                            o[INDEX3(i,0,3,numComp,3)] = f_000[i]*tmp0_14 + f_011[i]*tmp0_18 + f_100[i]*tmp0_19 + f_111[i]*tmp0_17 + tmp0_15*(f_001[i] + f_010[i]) + tmp0_16*(f_101[i] + f_110[i]);
438                            o[INDEX3(i,1,3,numComp,3)] = f_000[i]*tmp0_24 + f_001[i]*tmp0_25 + f_010[i]*tmp0_27 + f_011[i]*tmp0_26;
439                            o[INDEX3(i,2,3,numComp,3)] = f_000[i]*tmp0_32 + f_001[i]*tmp0_33 + f_010[i]*tmp0_35 + f_011[i]*tmp0_34;
440                        } /* end of component loop i */
441                    } /* end of k1 loop */
442                } /* end of k2 loop */
443            } /* end of face 0 */
444            if (m_faceOffset[1] > -1) {
445                const double tmp0_22 = 0.78867513459481288225/h1;
446                const double tmp0_16 = 0.16666666666666666667/h0;
447                const double tmp0_33 = 0.78867513459481288225/h2;
448                const double tmp0_0 = -0.62200846792814621559/h0;
449                const double tmp0_21 = 0.21132486540518711775/h1;
450                const double tmp0_17 = 0.62200846792814621559/h0;
451                const double tmp0_1 = -0.16666666666666666667/h0;
452                const double tmp0_20 = -0.21132486540518711775/h1;
453                const double tmp0_14 = -0.044658198738520451079/h0;
454                const double tmp0_2 = 0.16666666666666666667/h0;
455                const double tmp0_27 = -0.21132486540518711775/h1;
456                const double tmp0_15 = -0.16666666666666666667/h0;
457                const double tmp0_3 = 0.044658198738520451079/h0;
458                const double tmp0_26 = 0.21132486540518711775/h1;
459                const double tmp0_12 = -0.62200846792814621559/h0;
460                const double tmp0_25 = 0.78867513459481288225/h1;
461                const double tmp0_13 = 0.16666666666666666667/h0;
462                const double tmp0_24 = -0.78867513459481288225/h1;
463                const double tmp0_10 = 0.62200846792814621559/h0;
464                const double tmp0_11 = -0.16666666666666666667/h0;
465                const double tmp0_34 = -0.78867513459481288225/h2;
466                const double tmp0_35 = -0.21132486540518711775/h2;
467                const double tmp0_8 = 0.044658198738520451079/h0;
468                const double tmp0_29 = 0.21132486540518711775/h2;
469                const double tmp0_9 = 0.16666666666666666667/h0;
470                const double tmp0_30 = -0.21132486540518711775/h2;
471                const double tmp0_28 = 0.78867513459481288225/h2;
472                const double tmp0_32 = 0.21132486540518711775/h2;
473                const double tmp0_31 = -0.78867513459481288225/h2;
474                const double tmp0_18 = -0.62200846792814621559/h0;
475                const double tmp0_4 = -0.044658198738520451079/h0;
476                const double tmp0_19 = 0.044658198738520451079/h0;
477                const double tmp0_5 = 0.62200846792814621559/h0;
478                const double tmp0_6 = -0.16666666666666666667/h0;
479                const double tmp0_23 = -0.78867513459481288225/h1;
480                const double tmp0_7 = -0.044658198738520451079/h0;
481    #pragma omp parallel for
482                for (index_t k2=0; k2 < m_NE2; ++k2) {
483                    for (index_t k1=0; k1 < m_NE1; ++k1) {
484                        const register double* f_000 = in.getSampleDataRO(INDEX3(m_N0-2,k1,k2, m_N0,m_N1));
485                        const register double* f_001 = in.getSampleDataRO(INDEX3(m_N0-2,k1,k2+1, m_N0,m_N1));
486                        const register double* f_101 = in.getSampleDataRO(INDEX3(m_N0-1,k1,k2+1, m_N0,m_N1));
487                        const register double* f_111 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2+1, m_N0,m_N1));
488                        const register double* f_110 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2, m_N0,m_N1));
489                        const register double* f_011 = in.getSampleDataRO(INDEX3(m_N0-2,k1+1,k2+1, m_N0,m_N1));
490                        const register double* f_010 = in.getSampleDataRO(INDEX3(m_N0-2,k1+1,k2, m_N0,m_N1));
491                        const register double* f_100 = in.getSampleDataRO(INDEX3(m_N0-1,k1,k2, m_N0,m_N1));
492                        double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE1));
493                        for (index_t i=0; i < numComp; ++i) {
494                            o[INDEX3(i,0,0,numComp,3)] = f_000[i]*tmp0_0 + f_011[i]*tmp0_4 + f_100[i]*tmp0_5 + f_111[i]*tmp0_3 + tmp0_1*(f_001[i] + f_010[i]) + tmp0_2*(f_101[i] + f_110[i]);
495                            o[INDEX3(i,1,0,numComp,3)] = f_100[i]*tmp0_23 + f_101[i]*tmp0_20 + f_110[i]*tmp0_22 + f_111[i]*tmp0_21;
496                            o[INDEX3(i,2,0,numComp,3)] = f_100[i]*tmp0_31 + f_101[i]*tmp0_28 + f_110[i]*tmp0_30 + f_111[i]*tmp0_29;
497                            o[INDEX3(i,0,1,numComp,3)] = f_000[i]*tmp0_6 + f_001[i]*tmp0_7 + f_010[i]*tmp0_12 + f_011[i]*tmp0_11 + f_100[i]*tmp0_13 + f_101[i]*tmp0_8 + f_110[i]*tmp0_10 + f_111[i]*tmp0_9;
498                            o[INDEX3(i,1,1,numComp,3)] = f_100[i]*tmp0_23 + f_101[i]*tmp0_20 + f_110[i]*tmp0_22 + f_111[i]*tmp0_21;
499                            o[INDEX3(i,2,1,numComp,3)] = f_100[i]*tmp0_35 + f_101[i]*tmp0_32 + f_110[i]*tmp0_34 + f_111[i]*tmp0_33;
500                            o[INDEX3(i,0,2,numComp,3)] = f_000[i]*tmp0_6 + f_001[i]*tmp0_12 + f_010[i]*tmp0_7 + f_011[i]*tmp0_11 + f_100[i]*tmp0_13 + f_101[i]*tmp0_10 + f_110[i]*tmp0_8 + f_111[i]*tmp0_9;
501                            o[INDEX3(i,1,2,numComp,3)] = f_100[i]*tmp0_27 + f_101[i]*tmp0_24 + f_110[i]*tmp0_26 + f_111[i]*tmp0_25;
502                            o[INDEX3(i,2,2,numComp,3)] = f_100[i]*tmp0_31 + f_101[i]*tmp0_28 + f_110[i]*tmp0_30 + f_111[i]*tmp0_29;
503                            o[INDEX3(i,0,3,numComp,3)] = f_000[i]*tmp0_14 + f_011[i]*tmp0_18 + f_100[i]*tmp0_19 + f_111[i]*tmp0_17 + tmp0_15*(f_001[i] + f_010[i]) + tmp0_16*(f_101[i] + f_110[i]);
504                            o[INDEX3(i,1,3,numComp,3)] = f_100[i]*tmp0_27 + f_101[i]*tmp0_24 + f_110[i]*tmp0_26 + f_111[i]*tmp0_25;
505                            o[INDEX3(i,2,3,numComp,3)] = f_100[i]*tmp0_35 + f_101[i]*tmp0_32 + f_110[i]*tmp0_34 + f_111[i]*tmp0_33;
506                        } /* end of component loop i */
507                    } /* end of k1 loop */
508                } /* end of k2 loop */
509            } /* end of face 1 */
510            if (m_faceOffset[2] > -1) {
511                const double tmp0_22 = -0.044658198738520451079/h1;
512                const double tmp0_16 = -0.16666666666666666667/h1;
513                const double tmp0_33 = 0.21132486540518711775/h2;
514                const double tmp0_0 = -0.78867513459481288225/h0;
515                const double tmp0_21 = 0.16666666666666666667/h1;
516                const double tmp0_17 = -0.62200846792814621559/h1;
517                const double tmp0_1 = -0.21132486540518711775/h0;
518                const double tmp0_20 = 0.044658198738520451079/h1;
519                const double tmp0_14 = -0.16666666666666666667/h1;
520                const double tmp0_2 = 0.21132486540518711775/h0;
521                const double tmp0_27 = 0.044658198738520451079/h1;
522                const double tmp0_15 = -0.044658198738520451079/h1;
523                const double tmp0_3 = 0.78867513459481288225/h0;
524                const double tmp0_26 = 0.16666666666666666667/h1;
525                const double tmp0_12 = 0.16666666666666666667/h1;
526                const double tmp0_25 = 0.62200846792814621559/h1;
527                const double tmp0_13 = 0.62200846792814621559/h1;
528                const double tmp0_24 = -0.62200846792814621559/h1;
529                const double tmp0_10 = -0.044658198738520451079/h1;
530                const double tmp0_11 = 0.044658198738520451079/h1;
531                const double tmp0_34 = 0.78867513459481288225/h2;
532                const double tmp0_35 = -0.78867513459481288225/h2;
533                const double tmp0_8 = -0.62200846792814621559/h1;
534                const double tmp0_29 = 0.78867513459481288225/h2;
535                const double tmp0_9 = -0.16666666666666666667/h1;
536                const double tmp0_30 = 0.21132486540518711775/h2;
537                const double tmp0_28 = -0.78867513459481288225/h2;
538                const double tmp0_32 = -0.21132486540518711775/h2;
539                const double tmp0_31 = -0.21132486540518711775/h2;
540                const double tmp0_18 = 0.16666666666666666667/h1;
541                const double tmp0_4 = -0.21132486540518711775/h0;
542                const double tmp0_19 = 0.62200846792814621559/h1;
543                const double tmp0_5 = -0.78867513459481288225/h0;
544                const double tmp0_6 = 0.78867513459481288225/h0;
545                const double tmp0_23 = -0.16666666666666666667/h1;
546                const double tmp0_7 = 0.21132486540518711775/h0;
547    #pragma omp parallel for
548                for (index_t k2=0; k2 < m_NE2; ++k2) {
549                    for (index_t k0=0; k0 < m_NE0; ++k0) {
550                        const register double* f_000 = in.getSampleDataRO(INDEX3(k0,0,k2, m_N0,m_N1));
551                        const register double* f_001 = in.getSampleDataRO(INDEX3(k0,0,k2+1, m_N0,m_N1));
552                        const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,0,k2+1, m_N0,m_N1));
553                        const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,0,k2, m_N0,m_N1));
554                        const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,1,k2+1, m_N0,m_N1));
555                        const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,1,k2, m_N0,m_N1));
556                        const register double* f_011 = in.getSampleDataRO(INDEX3(k0,1,k2+1, m_N0,m_N1));
557                        const register double* f_010 = in.getSampleDataRO(INDEX3(k0,1,k2, m_N0,m_N1));
558                        double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE0));
559                        for (index_t i=0; i < numComp; ++i) {
560                            o[INDEX3(i,0,0,numComp,3)] = f_000[i]*tmp0_0 + f_001[i]*tmp0_1 + f_100[i]*tmp0_3 + f_101[i]*tmp0_2;
561                            o[INDEX3(i,1,0,numComp,3)] = f_000[i]*tmp0_8 + f_010[i]*tmp0_13 + f_101[i]*tmp0_10 + f_111[i]*tmp0_11 + tmp0_12*(f_011[i] + f_110[i]) + tmp0_9*(f_001[i] + f_100[i]);
562                            o[INDEX3(i,2,0,numComp,3)] = f_000[i]*tmp0_28 + f_001[i]*tmp0_29 + f_100[i]*tmp0_31 + f_101[i]*tmp0_30;
563                            o[INDEX3(i,0,1,numComp,3)] = f_000[i]*tmp0_0 + f_001[i]*tmp0_1 + f_100[i]*tmp0_3 + f_101[i]*tmp0_2;
564                            o[INDEX3(i,1,1,numComp,3)] = f_000[i]*tmp0_14 + f_001[i]*tmp0_15 + f_010[i]*tmp0_21 + f_011[i]*tmp0_20 + f_100[i]*tmp0_17 + f_101[i]*tmp0_16 + f_110[i]*tmp0_19 + f_111[i]*tmp0_18;
565                            o[INDEX3(i,2,1,numComp,3)] = f_000[i]*tmp0_32 + f_001[i]*tmp0_33 + f_100[i]*tmp0_35 + f_101[i]*tmp0_34;
566                            o[INDEX3(i,0,2,numComp,3)] = f_000[i]*tmp0_4 + f_001[i]*tmp0_5 + f_100[i]*tmp0_7 + f_101[i]*tmp0_6;
567                            o[INDEX3(i,1,2,numComp,3)] = f_000[i]*tmp0_14 + f_001[i]*tmp0_17 + f_010[i]*tmp0_21 + f_011[i]*tmp0_19 + f_100[i]*tmp0_15 + f_101[i]*tmp0_16 + f_110[i]*tmp0_20 + f_111[i]*tmp0_18;
568                            o[INDEX3(i,2,2,numComp,3)] = f_000[i]*tmp0_28 + f_001[i]*tmp0_29 + f_100[i]*tmp0_31 + f_101[i]*tmp0_30;
569                            o[INDEX3(i,0,3,numComp,3)] = f_000[i]*tmp0_4 + f_001[i]*tmp0_5 + f_100[i]*tmp0_7 + f_101[i]*tmp0_6;
570                            o[INDEX3(i,1,3,numComp,3)] = f_000[i]*tmp0_22 + f_010[i]*tmp0_27 + f_101[i]*tmp0_24 + f_111[i]*tmp0_25 + tmp0_23*(f_001[i] + f_100[i]) + tmp0_26*(f_011[i] + f_110[i]);
571                            o[INDEX3(i,2,3,numComp,3)] = f_000[i]*tmp0_32 + f_001[i]*tmp0_33 + f_100[i]*tmp0_35 + f_101[i]*tmp0_34;
572                        } /* end of component loop i */
573                    } /* end of k0 loop */
574                } /* end of k2 loop */
575            } /* end of face 2 */
576            if (m_faceOffset[3] > -1) {
577                const double tmp0_22 = 0.16666666666666666667/h1;
578                const double tmp0_16 = 0.16666666666666666667/h1;
579                const double tmp0_33 = -0.78867513459481288225/h2;
580                const double tmp0_0 = -0.21132486540518711775/h0;
581                const double tmp0_21 = -0.62200846792814621559/h1;
582                const double tmp0_17 = 0.16666666666666666667/h1;
583                const double tmp0_1 = 0.78867513459481288225/h0;
584                const double tmp0_20 = -0.16666666666666666667/h1;
585                const double tmp0_14 = 0.044658198738520451079/h1;
586                const double tmp0_2 = -0.78867513459481288225/h0;
587                const double tmp0_27 = -0.62200846792814621559/h1;
588                const double tmp0_15 = 0.62200846792814621559/h1;
589                const double tmp0_3 = 0.21132486540518711775/h0;
590                const double tmp0_26 = -0.16666666666666666667/h1;
591                const double tmp0_12 = -0.16666666666666666667/h1;
592                const double tmp0_25 = -0.044658198738520451079/h1;
593                const double tmp0_13 = -0.044658198738520451079/h1;
594                const double tmp0_24 = 0.62200846792814621559/h1;
595                const double tmp0_10 = 0.044658198738520451079/h1;
596                const double tmp0_11 = -0.62200846792814621559/h1;
597                const double tmp0_34 = -0.21132486540518711775/h2;
598                const double tmp0_35 = 0.78867513459481288225/h2;
599                const double tmp0_8 = 0.16666666666666666667/h1;
600                const double tmp0_29 = -0.21132486540518711775/h2;
601                const double tmp0_9 = 0.62200846792814621559/h1;
602                const double tmp0_30 = -0.78867513459481288225/h2;
603                const double tmp0_28 = 0.78867513459481288225/h2;
604                const double tmp0_32 = 0.21132486540518711775/h2;
605                const double tmp0_31 = 0.21132486540518711775/h2;
606                const double tmp0_18 = -0.16666666666666666667/h1;
607                const double tmp0_4 = -0.78867513459481288225/h0;
608                const double tmp0_19 = -0.044658198738520451079/h1;
609                const double tmp0_5 = 0.21132486540518711775/h0;
610                const double tmp0_6 = -0.21132486540518711775/h0;
611                const double tmp0_23 = 0.044658198738520451079/h1;
612                const double tmp0_7 = 0.78867513459481288225/h0;
613    #pragma omp parallel for
614                for (index_t k2=0; k2 < m_NE2; ++k2) {
615                    for (index_t k0=0; k0 < m_NE0; ++k0) {
616                        const register double* f_011 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2+1, m_N0,m_N1));
617                        const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,m_N1-1,k2, m_N0,m_N1));
618                        const register double* f_010 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2, m_N0,m_N1));
619                        const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,m_N1-1,k2+1, m_N0,m_N1));
620                        const register double* f_000 = in.getSampleDataRO(INDEX3(k0,m_N1-2,k2, m_N0,m_N1));
621                        const register double* f_001 = in.getSampleDataRO(INDEX3(k0,m_N1-2,k2+1, m_N0,m_N1));
622                        const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,m_N1-2,k2+1, m_N0,m_N1));
623                        const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,m_N1-2,k2, m_N0,m_N1));
624                        double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE0));
625                        for (index_t i=0; i < numComp; ++i) {
626                            o[INDEX3(i,0,0,numComp,3)] = f_010[i]*tmp0_2 + f_011[i]*tmp0_0 + f_110[i]*tmp0_1 + f_111[i]*tmp0_3;
627                            o[INDEX3(i,1,0,numComp,3)] = f_000[i]*tmp0_11 + f_010[i]*tmp0_9 + f_101[i]*tmp0_13 + f_111[i]*tmp0_10 + tmp0_12*(f_001[i] + f_100[i]) + tmp0_8*(f_011[i] + f_110[i]);
628                            o[INDEX3(i,2,0,numComp,3)] = f_010[i]*tmp0_30 + f_011[i]*tmp0_28 + f_110[i]*tmp0_29 + f_111[i]*tmp0_31;
629                            o[INDEX3(i,0,1,numComp,3)] = f_010[i]*tmp0_2 + f_011[i]*tmp0_0 + f_110[i]*tmp0_1 + f_111[i]*tmp0_3;
630                            o[INDEX3(i,1,1,numComp,3)] = f_000[i]*tmp0_18 + f_001[i]*tmp0_19 + f_010[i]*tmp0_16 + f_011[i]*tmp0_14 + f_100[i]*tmp0_21 + f_101[i]*tmp0_20 + f_110[i]*tmp0_15 + f_111[i]*tmp0_17;
631                            o[INDEX3(i,2,1,numComp,3)] = f_010[i]*tmp0_34 + f_011[i]*tmp0_32 + f_110[i]*tmp0_33 + f_111[i]*tmp0_35;
632                            o[INDEX3(i,0,2,numComp,3)] = f_010[i]*tmp0_6 + f_011[i]*tmp0_4 + f_110[i]*tmp0_5 + f_111[i]*tmp0_7;
633                            o[INDEX3(i,1,2,numComp,3)] = f_000[i]*tmp0_18 + f_001[i]*tmp0_21 + f_010[i]*tmp0_16 + f_011[i]*tmp0_15 + f_100[i]*tmp0_19 + f_101[i]*tmp0_20 + f_110[i]*tmp0_14 + f_111[i]*tmp0_17;
634                            o[INDEX3(i,2,2,numComp,3)] = f_010[i]*tmp0_30 + f_011[i]*tmp0_28 + f_110[i]*tmp0_29 + f_111[i]*tmp0_31;
635                            o[INDEX3(i,0,3,numComp,3)] = f_010[i]*tmp0_6 + f_011[i]*tmp0_4 + f_110[i]*tmp0_5 + f_111[i]*tmp0_7;
636                            o[INDEX3(i,1,3,numComp,3)] = f_000[i]*tmp0_25 + f_010[i]*tmp0_23 + f_101[i]*tmp0_27 + f_111[i]*tmp0_24 + tmp0_22*(f_011[i] + f_110[i]) + tmp0_26*(f_001[i] + f_100[i]);
637                            o[INDEX3(i,2,3,numComp,3)] = f_010[i]*tmp0_34 + f_011[i]*tmp0_32 + f_110[i]*tmp0_33 + f_111[i]*tmp0_35;
638                        } /* end of component loop i */
639                    } /* end of k0 loop */
640                } /* end of k2 loop */
641            } /* end of face 3 */
642            if (m_faceOffset[4] > -1) {
643                const double tmp0_22 = -0.16666666666666666667/h2;
644                const double tmp0_16 = -0.62200846792814621559/h2;
645                const double tmp0_33 = 0.044658198738520451079/h2;
646                const double tmp0_0 = -0.78867513459481288225/h0;
647                const double tmp0_21 = 0.044658198738520451079/h2;
648                const double tmp0_17 = -0.16666666666666666667/h2;
649                const double tmp0_1 = 0.78867513459481288225/h0;
650                const double tmp0_20 = 0.16666666666666666667/h2;
651                const double tmp0_14 = 0.78867513459481288225/h1;
652                const double tmp0_2 = 0.21132486540518711775/h0;
653                const double tmp0_27 = 0.62200846792814621559/h2;
654                const double tmp0_15 = 0.21132486540518711775/h1;
655                const double tmp0_3 = -0.21132486540518711775/h0;
656                const double tmp0_26 = 0.16666666666666666667/h2;
657                const double tmp0_12 = -0.21132486540518711775/h1;
658                const double tmp0_25 = -0.044658198738520451079/h2;
659                const double tmp0_13 = -0.78867513459481288225/h1;
660                const double tmp0_24 = -0.16666666666666666667/h2;
661                const double tmp0_10 = 0.21132486540518711775/h1;
662                const double tmp0_11 = 0.78867513459481288225/h1;
663                const double tmp0_34 = 0.16666666666666666667/h2;
664                const double tmp0_35 = 0.62200846792814621559/h2;
665                const double tmp0_8 = -0.78867513459481288225/h1;
666                const double tmp0_29 = 0.16666666666666666667/h2;
667                const double tmp0_9 = -0.21132486540518711775/h1;
668                const double tmp0_30 = -0.044658198738520451079/h2;
669                const double tmp0_28 = 0.044658198738520451079/h2;
670                const double tmp0_32 = -0.62200846792814621559/h2;
671                const double tmp0_31 = -0.16666666666666666667/h2;
672                const double tmp0_18 = -0.044658198738520451079/h2;
673                const double tmp0_4 = -0.21132486540518711775/h0;
674                const double tmp0_19 = 0.62200846792814621559/h2;
675                const double tmp0_5 = 0.21132486540518711775/h0;
676                const double tmp0_6 = 0.78867513459481288225/h0;
677                const double tmp0_23 = -0.62200846792814621559/h2;
678                const double tmp0_7 = -0.78867513459481288225/h0;
679    #pragma omp parallel for
680                for (index_t k1=0; k1 < m_NE1; ++k1) {
681                    for (index_t k0=0; k0 < m_NE0; ++k0) {
682                        const register double* f_000 = in.getSampleDataRO(INDEX3(k0,k1,0, m_N0,m_N1));
683                        const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,k1,0, m_N0,m_N1));
684                        const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,k1+1,0, m_N0,m_N1));
685                        const register double* f_010 = in.getSampleDataRO(INDEX3(k0,k1+1,0, m_N0,m_N1));
686                        const register double* f_001 = in.getSampleDataRO(INDEX3(k0,k1,1, m_N0,m_N1));
687                        const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,1, m_N0,m_N1));
688                        const register double* f_011 = in.getSampleDataRO(INDEX3(k0,k1+1,1, m_N0,m_N1));
689                        const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,k1+1,1, m_N0,m_N1));
690                        double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE0));
691                        for (index_t i=0; i < numComp; ++i) {
692                            o[INDEX3(i,0,0,numComp,3)] = f_000[i]*tmp0_0 + f_010[i]*tmp0_3 + f_100[i]*tmp0_1 + f_110[i]*tmp0_2;
693                            o[INDEX3(i,1,0,numComp,3)] = f_000[i]*tmp0_8 + f_010[i]*tmp0_11 + f_100[i]*tmp0_9 + f_110[i]*tmp0_10;
694                            o[INDEX3(i,2,0,numComp,3)] = f_000[i]*tmp0_16 + f_001[i]*tmp0_19 + f_110[i]*tmp0_18 + f_111[i]*tmp0_21 + tmp0_17*(f_010[i] + f_100[i]) + tmp0_20*(f_011[i] + f_101[i]);
695                            o[INDEX3(i,0,1,numComp,3)] = f_000[i]*tmp0_0 + f_010[i]*tmp0_3 + f_100[i]*tmp0_1 + f_110[i]*tmp0_2;
696                            o[INDEX3(i,1,1,numComp,3)] = f_000[i]*tmp0_12 + f_010[i]*tmp0_15 + f_100[i]*tmp0_13 + f_110[i]*tmp0_14;
697                            o[INDEX3(i,2,1,numComp,3)] = f_000[i]*tmp0_22 + f_001[i]*tmp0_26 + f_010[i]*tmp0_25 + f_011[i]*tmp0_28 + f_100[i]*tmp0_23 + f_101[i]*tmp0_27 + f_110[i]*tmp0_24 + f_111[i]*tmp0_29;
698                            o[INDEX3(i,0,2,numComp,3)] = f_000[i]*tmp0_4 + f_010[i]*tmp0_7 + f_100[i]*tmp0_5 + f_110[i]*tmp0_6;
699                            o[INDEX3(i,1,2,numComp,3)] = f_000[i]*tmp0_8 + f_010[i]*tmp0_11 + f_100[i]*tmp0_9 + f_110[i]*tmp0_10;
700                            o[INDEX3(i,2,2,numComp,3)] = f_000[i]*tmp0_22 + f_001[i]*tmp0_26 + f_010[i]*tmp0_23 + f_011[i]*tmp0_27 + f_100[i]*tmp0_25 + f_101[i]*tmp0_28 + f_110[i]*tmp0_24 + f_111[i]*tmp0_29;
701                            o[INDEX3(i,0,3,numComp,3)] = f_000[i]*tmp0_4 + f_010[i]*tmp0_7 + f_100[i]*tmp0_5 + f_110[i]*tmp0_6;
702                            o[INDEX3(i,1,3,numComp,3)] = f_000[i]*tmp0_12 + f_010[i]*tmp0_15 + f_100[i]*tmp0_13 + f_110[i]*tmp0_14;
703                            o[INDEX3(i,2,3,numComp,3)] = f_000[i]*tmp0_30 + f_001[i]*tmp0_33 + f_110[i]*tmp0_32 + f_111[i]*tmp0_35 + tmp0_31*(f_010[i] + f_100[i]) + tmp0_34*(f_011[i] + f_101[i]);
704                        } /* end of component loop i */
705                    } /* end of k0 loop */
706                } /* end of k1 loop */
707            } /* end of face 4 */
708            if (m_faceOffset[5] > -1) {
709                const double tmp0_22 = 0.16666666666666666667/h2;
710                const double tmp0_16 = 0.62200846792814621559/h2;
711                const double tmp0_33 = -0.044658198738520451079/h2;
712                const double tmp0_0 = -0.78867513459481288225/h0;
713                const double tmp0_21 = -0.16666666666666666667/h2;
714                const double tmp0_17 = 0.16666666666666666667/h2;
715                const double tmp0_1 = 0.78867513459481288225/h0;
716                const double tmp0_20 = -0.044658198738520451079/h2;
717                const double tmp0_14 = 0.21132486540518711775/h1;
718                const double tmp0_2 = -0.21132486540518711775/h0;
719                const double tmp0_27 = -0.16666666666666666667/h2;
720                const double tmp0_15 = 0.78867513459481288225/h1;
721                const double tmp0_3 = 0.21132486540518711775/h0;
722                const double tmp0_26 = -0.16666666666666666667/h2;
723                const double tmp0_12 = -0.21132486540518711775/h1;
724                const double tmp0_25 = 0.16666666666666666667/h2;
725                const double tmp0_13 = -0.78867513459481288225/h1;
726                const double tmp0_24 = 0.044658198738520451079/h2;
727                const double tmp0_10 = 0.78867513459481288225/h1;
728                const double tmp0_11 = 0.21132486540518711775/h1;
729                const double tmp0_34 = -0.62200846792814621559/h2;
730                const double tmp0_35 = -0.16666666666666666667/h2;
731                const double tmp0_8 = -0.78867513459481288225/h1;
732                const double tmp0_29 = -0.62200846792814621559/h2;
733                const double tmp0_9 = -0.21132486540518711775/h1;
734                const double tmp0_30 = 0.044658198738520451079/h2;
735                const double tmp0_28 = -0.044658198738520451079/h2;
736                const double tmp0_32 = 0.62200846792814621559/h2;
737                const double tmp0_31 = 0.16666666666666666667/h2;
738                const double tmp0_18 = 0.044658198738520451079/h2;
739                const double tmp0_4 = -0.21132486540518711775/h0;
740                const double tmp0_19 = -0.62200846792814621559/h2;
741                const double tmp0_5 = 0.21132486540518711775/h0;
742                const double tmp0_6 = -0.78867513459481288225/h0;
743                const double tmp0_23 = 0.62200846792814621559/h2;
744                const double tmp0_7 = 0.78867513459481288225/h0;
745    #pragma omp parallel for
746                for (index_t k1=0; k1 < m_NE1; ++k1) {
747                    for (index_t k0=0; k0 < m_NE0; ++k0) {
748                        const register double* f_001 = in.getSampleDataRO(INDEX3(k0,k1,m_N2-1, m_N0,m_N1));
749                        const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,m_N2-1, m_N0,m_N1));
750                        const register double* f_011 = in.getSampleDataRO(INDEX3(k0,k1+1,m_N2-1, m_N0,m_N1));
751                        const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,k1+1,m_N2-1, m_N0,m_N1));
752                        const register double* f_000 = in.getSampleDataRO(INDEX3(k0,k1,m_N2-2, m_N0,m_N1));
753                        const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,k1+1,m_N2-2, m_N0,m_N1));
754                        const register double* f_010 = in.getSampleDataRO(INDEX3(k0,k1+1,m_N2-2, m_N0,m_N1));
755                        const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,k1,m_N2-2, m_N0,m_N1));
756                        double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE0));
757                        for (index_t i=0; i < numComp; ++i) {
758                            o[INDEX3(i,0,0,numComp,3)] = f_001[i]*tmp0_0 + f_011[i]*tmp0_2 + f_101[i]*tmp0_1 + f_111[i]*tmp0_3;
759                            o[INDEX3(i,1,0,numComp,3)] = f_001[i]*tmp0_8 + f_011[i]*tmp0_10 + f_101[i]*tmp0_9 + f_111[i]*tmp0_11;
760                            o[INDEX3(i,2,0,numComp,3)] = f_000[i]*tmp0_19 + f_001[i]*tmp0_16 + f_110[i]*tmp0_20 + f_111[i]*tmp0_18 + tmp0_17*(f_011[i] + f_101[i]) + tmp0_21*(f_010[i] + f_100[i]);
761                            o[INDEX3(i,0,1,numComp,3)] = f_001[i]*tmp0_0 + f_011[i]*tmp0_2 + f_101[i]*tmp0_1 + f_111[i]*tmp0_3;
762                            o[INDEX3(i,1,1,numComp,3)] = f_001[i]*tmp0_12 + f_011[i]*tmp0_14 + f_101[i]*tmp0_13 + f_111[i]*tmp0_15;
763                            o[INDEX3(i,2,1,numComp,3)] = f_000[i]*tmp0_26 + f_001[i]*tmp0_22 + f_010[i]*tmp0_28 + f_011[i]*tmp0_24 + f_100[i]*tmp0_29 + f_101[i]*tmp0_23 + f_110[i]*tmp0_27 + f_111[i]*tmp0_25;
764                            o[INDEX3(i,0,2,numComp,3)] = f_001[i]*tmp0_4 + f_011[i]*tmp0_6 + f_101[i]*tmp0_5 + f_111[i]*tmp0_7;
765                            o[INDEX3(i,1,2,numComp,3)] = f_001[i]*tmp0_8 + f_011[i]*tmp0_10 + f_101[i]*tmp0_9 + f_111[i]*tmp0_11;
766                            o[INDEX3(i,2,2,numComp,3)] = f_000[i]*tmp0_26 + f_001[i]*tmp0_22 + f_010[i]*tmp0_29 + f_011[i]*tmp0_23 + f_100[i]*tmp0_28 + f_101[i]*tmp0_24 + f_110[i]*tmp0_27 + f_111[i]*tmp0_25;
767                            o[INDEX3(i,0,3,numComp,3)] = f_001[i]*tmp0_4 + f_011[i]*tmp0_6 + f_101[i]*tmp0_5 + f_111[i]*tmp0_7;
768                            o[INDEX3(i,1,3,numComp,3)] = f_001[i]*tmp0_12 + f_011[i]*tmp0_14 + f_101[i]*tmp0_13 + f_111[i]*tmp0_15;
769                            o[INDEX3(i,2,3,numComp,3)] = f_000[i]*tmp0_33 + f_001[i]*tmp0_30 + f_110[i]*tmp0_34 + f_111[i]*tmp0_32 + tmp0_31*(f_011[i] + f_101[i]) + tmp0_35*(f_010[i] + f_100[i]);
770                        } /* end of component loop i */
771                    } /* end of k0 loop */
772                } /* end of k1 loop */
773            } /* end of face 5 */
774            /* GENERATOR SNIP_GRAD_FACES BOTTOM */
775      } else {      } else {
776          throw RipleyException("setToGradient() not implemented");          stringstream msg;
777            msg << "setToGradient() not implemented for "
778                << functionSpaceTypeAsString(out.getFunctionSpace().getTypeCode());
779            throw RipleyException(msg.str());
780      }      }
781  }  }
782    
# Line 728  void Brick::interpolateNodesOnFaces(escr Line 1130  void Brick::interpolateNodesOnFaces(escr
1130      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
1131      /* GENERATOR SNIP_INTERPOLATE_FACES TOP */      /* GENERATOR SNIP_INTERPOLATE_FACES TOP */
1132      if (m_faceOffset[0] > -1) {      if (m_faceOffset[0] > -1) {
         const index_t k0 = 0;  
1133          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1134          const double tmp0_1 = 0.16666666666666666667;          const double tmp0_1 = 0.16666666666666666667;
1135          const double tmp0_0 = 0.62200846792814621559;          const double tmp0_0 = 0.62200846792814621559;
# Line 739  void Brick::interpolateNodesOnFaces(escr Line 1140  void Brick::interpolateNodesOnFaces(escr
1140                  const register double* f_001 = in.getSampleDataRO(INDEX3(0,k1,k2+1, m_N0,m_N1));                  const register double* f_001 = in.getSampleDataRO(INDEX3(0,k1,k2+1, m_N0,m_N1));
1141                  const register double* f_011 = in.getSampleDataRO(INDEX3(0,k1+1,k2+1, m_N0,m_N1));                  const register double* f_011 = in.getSampleDataRO(INDEX3(0,k1+1,k2+1, m_N0,m_N1));
1142                  const register double* f_010 = in.getSampleDataRO(INDEX3(0,k1+1,k2, m_N0,m_N1));                  const register double* f_010 = in.getSampleDataRO(INDEX3(0,k1+1,k2, m_N0,m_N1));
1143                  double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE1));
1144                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1145                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_011[i]*tmp0_2 + tmp0_1*(f_001[i] + f_010[i]);                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_011[i]*tmp0_2 + tmp0_1*(f_001[i] + f_010[i]);
1146                      o[INDEX2(i,numComp,1)] = f_001[i]*tmp0_2 + f_010[i]*tmp0_0 + tmp0_1*(f_000[i] + f_011[i]);                      o[INDEX2(i,numComp,1)] = f_001[i]*tmp0_2 + f_010[i]*tmp0_0 + tmp0_1*(f_000[i] + f_011[i]);
# Line 750  void Brick::interpolateNodesOnFaces(escr Line 1151  void Brick::interpolateNodesOnFaces(escr
1151          } /* end of k2 loop */          } /* end of k2 loop */
1152      } /* end of face 0 */      } /* end of face 0 */
1153      if (m_faceOffset[1] > -1) {      if (m_faceOffset[1] > -1) {
         const index_t k0 = 0;  
1154          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1155          const double tmp0_1 = 0.62200846792814621559;          const double tmp0_1 = 0.62200846792814621559;
1156          const double tmp0_0 = 0.16666666666666666667;          const double tmp0_0 = 0.16666666666666666667;
# Line 761  void Brick::interpolateNodesOnFaces(escr Line 1161  void Brick::interpolateNodesOnFaces(escr
1161                  const register double* f_100 = in.getSampleDataRO(INDEX3(m_N0-1,k1,k2, m_N0,m_N1));                  const register double* f_100 = in.getSampleDataRO(INDEX3(m_N0-1,k1,k2, m_N0,m_N1));
1162                  const register double* f_110 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2, m_N0,m_N1));                  const register double* f_110 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2, m_N0,m_N1));
1163                  const register double* f_111 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2+1, m_N0,m_N1));                  const register double* f_111 = in.getSampleDataRO(INDEX3(m_N0-1,k1+1,k2+1, m_N0,m_N1));
1164                  double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE1));
1165                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1166                      o[INDEX2(i,numComp,0)] = f_100[i]*tmp0_1 + f_111[i]*tmp0_2 + tmp0_0*(f_101[i] + f_110[i]);                      o[INDEX2(i,numComp,0)] = f_100[i]*tmp0_1 + f_111[i]*tmp0_2 + tmp0_0*(f_101[i] + f_110[i]);
1167                      o[INDEX2(i,numComp,1)] = f_101[i]*tmp0_2 + f_110[i]*tmp0_1 + tmp0_0*(f_100[i] + f_111[i]);                      o[INDEX2(i,numComp,1)] = f_101[i]*tmp0_2 + f_110[i]*tmp0_1 + tmp0_0*(f_100[i] + f_111[i]);
# Line 772  void Brick::interpolateNodesOnFaces(escr Line 1172  void Brick::interpolateNodesOnFaces(escr
1172          } /* end of k2 loop */          } /* end of k2 loop */
1173      } /* end of face 1 */      } /* end of face 1 */
1174      if (m_faceOffset[2] > -1) {      if (m_faceOffset[2] > -1) {
         const index_t k1 = 0;  
1175          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1176          const double tmp0_1 = 0.16666666666666666667;          const double tmp0_1 = 0.16666666666666666667;
1177          const double tmp0_0 = 0.62200846792814621559;          const double tmp0_0 = 0.62200846792814621559;
# Line 783  void Brick::interpolateNodesOnFaces(escr Line 1182  void Brick::interpolateNodesOnFaces(escr
1182                  const register double* f_001 = in.getSampleDataRO(INDEX3(k0,0,k2+1, m_N0,m_N1));                  const register double* f_001 = in.getSampleDataRO(INDEX3(k0,0,k2+1, m_N0,m_N1));
1183                  const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,0,k2+1, m_N0,m_N1));                  const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,0,k2+1, m_N0,m_N1));
1184                  const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,0,k2, m_N0,m_N1));                  const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,0,k2, m_N0,m_N1));
1185                  double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE0));
1186                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1187                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_101[i]*tmp0_2 + tmp0_1*(f_001[i] + f_100[i]);                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_101[i]*tmp0_2 + tmp0_1*(f_001[i] + f_100[i]);
1188                      o[INDEX2(i,numComp,1)] = f_001[i]*tmp0_2 + f_100[i]*tmp0_0 + tmp0_1*(f_000[i] + f_101[i]);                      o[INDEX2(i,numComp,1)] = f_001[i]*tmp0_2 + f_100[i]*tmp0_0 + tmp0_1*(f_000[i] + f_101[i]);
# Line 794  void Brick::interpolateNodesOnFaces(escr Line 1193  void Brick::interpolateNodesOnFaces(escr
1193          } /* end of k2 loop */          } /* end of k2 loop */
1194      } /* end of face 2 */      } /* end of face 2 */
1195      if (m_faceOffset[3] > -1) {      if (m_faceOffset[3] > -1) {
         const index_t k1 = 0;  
1196          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1197          const double tmp0_1 = 0.62200846792814621559;          const double tmp0_1 = 0.62200846792814621559;
1198          const double tmp0_0 = 0.16666666666666666667;          const double tmp0_0 = 0.16666666666666666667;
# Line 805  void Brick::interpolateNodesOnFaces(escr Line 1203  void Brick::interpolateNodesOnFaces(escr
1203                  const register double* f_011 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2+1, m_N0,m_N1));                  const register double* f_011 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2+1, m_N0,m_N1));
1204                  const register double* f_010 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2, m_N0,m_N1));                  const register double* f_010 = in.getSampleDataRO(INDEX3(k0,m_N1-1,k2, m_N0,m_N1));
1205                  const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,m_N1-1,k2+1, m_N0,m_N1));                  const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,m_N1-1,k2+1, m_N0,m_N1));
1206                  double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE0));
1207                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1208                      o[INDEX2(i,numComp,0)] = f_010[i]*tmp0_1 + f_111[i]*tmp0_2 + tmp0_0*(f_011[i] + f_110[i]);                      o[INDEX2(i,numComp,0)] = f_010[i]*tmp0_1 + f_111[i]*tmp0_2 + tmp0_0*(f_011[i] + f_110[i]);
1209                      o[INDEX2(i,numComp,1)] = f_011[i]*tmp0_2 + f_110[i]*tmp0_1 + tmp0_0*(f_010[i] + f_111[i]);                      o[INDEX2(i,numComp,1)] = f_011[i]*tmp0_2 + f_110[i]*tmp0_1 + tmp0_0*(f_010[i] + f_111[i]);
# Line 816  void Brick::interpolateNodesOnFaces(escr Line 1214  void Brick::interpolateNodesOnFaces(escr
1214          } /* end of k2 loop */          } /* end of k2 loop */
1215      } /* end of face 3 */      } /* end of face 3 */
1216      if (m_faceOffset[4] > -1) {      if (m_faceOffset[4] > -1) {
         const index_t k2 = 0;  
1217          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1218          const double tmp0_1 = 0.16666666666666666667;          const double tmp0_1 = 0.16666666666666666667;
1219          const double tmp0_0 = 0.62200846792814621559;          const double tmp0_0 = 0.62200846792814621559;
# Line 827  void Brick::interpolateNodesOnFaces(escr Line 1224  void Brick::interpolateNodesOnFaces(escr
1224                  const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,k1,0, m_N0,m_N1));                  const register double* f_100 = in.getSampleDataRO(INDEX3(k0+1,k1,0, m_N0,m_N1));
1225                  const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,k1+1,0, m_N0,m_N1));                  const register double* f_110 = in.getSampleDataRO(INDEX3(k0+1,k1+1,0, m_N0,m_N1));
1226                  const register double* f_010 = in.getSampleDataRO(INDEX3(k0,k1+1,0, m_N0,m_N1));                  const register double* f_010 = in.getSampleDataRO(INDEX3(k0,k1+1,0, m_N0,m_N1));
1227                  double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE0));
1228                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1229                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_110[i]*tmp0_2 + tmp0_1*(f_010[i] + f_100[i]);                      o[INDEX2(i,numComp,0)] = f_000[i]*tmp0_0 + f_110[i]*tmp0_2 + tmp0_1*(f_010[i] + f_100[i]);
1230                      o[INDEX2(i,numComp,1)] = f_010[i]*tmp0_2 + f_100[i]*tmp0_0 + tmp0_1*(f_000[i] + f_110[i]);                      o[INDEX2(i,numComp,1)] = f_010[i]*tmp0_2 + f_100[i]*tmp0_0 + tmp0_1*(f_000[i] + f_110[i]);
# Line 838  void Brick::interpolateNodesOnFaces(escr Line 1235  void Brick::interpolateNodesOnFaces(escr
1235          } /* end of k1 loop */          } /* end of k1 loop */
1236      } /* end of face 4 */      } /* end of face 4 */
1237      if (m_faceOffset[5] > -1) {      if (m_faceOffset[5] > -1) {
         const index_t k2 = 0;  
1238          const double tmp0_2 = 0.044658198738520451079;          const double tmp0_2 = 0.044658198738520451079;
1239          const double tmp0_1 = 0.16666666666666666667;          const double tmp0_1 = 0.16666666666666666667;
1240          const double tmp0_0 = 0.62200846792814621559;          const double tmp0_0 = 0.62200846792814621559;
# Line 849  void Brick::interpolateNodesOnFaces(escr Line 1245  void Brick::interpolateNodesOnFaces(escr
1245                  const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,m_N2-1, m_N0,m_N1));                  const register double* f_101 = in.getSampleDataRO(INDEX3(k0+1,k1,m_N2-1, m_N0,m_N1));
1246                  const register double* f_011 = in.getSampleDataRO(INDEX3(k0,k1+1,m_N2-1, m_N0,m_N1));                  const register double* f_011 = in.getSampleDataRO(INDEX3(k0,k1+1,m_N2-1, m_N0,m_N1));
1247                  const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,k1+1,m_N2-1, m_N0,m_N1));                  const register double* f_111 = in.getSampleDataRO(INDEX3(k0+1,k1+1,m_N2-1, m_N0,m_N1));
1248                  double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX3(k0,k1,k2,m_NE0,m_NE1));                  double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE0));
1249                  for (index_t i=0; i < numComp; ++i) {                  for (index_t i=0; i < numComp; ++i) {
1250                      o[INDEX2(i,numComp,0)] = f_001[i]*tmp0_0 + f_111[i]*tmp0_2 + tmp0_1*(f_011[i] + f_101[i]);                      o[INDEX2(i,numComp,0)] = f_001[i]*tmp0_0 + f_111[i]*tmp0_2 + tmp0_1*(f_011[i] + f_101[i]);
1251                      o[INDEX2(i,numComp,1)] = f_011[i]*tmp0_2 + f_101[i]*tmp0_0 + tmp0_1*(f_001[i] + f_111[i]);                      o[INDEX2(i,numComp,1)] = f_011[i]*tmp0_2 + f_101[i]*tmp0_0 + tmp0_1*(f_001[i] + f_111[i]);

Legend:
Removed from v.3706  
changed lines
  Added in v.3707

  ViewVC Help
Powered by ViewVC 1.1.26