/[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

branches/ripleygmg_from_3668/ripley/src/Brick.cpp revision 3769 by caltinay, Tue Jan 17 04:09:55 2012 UTC trunk/ripley/src/Brick.cpp revision 3796 by gross, Thu Feb 2 06:26:15 2012 UTC
# Line 13  Line 13 
13    
14  #include <ripley/Brick.h>  #include <ripley/Brick.h>
15  extern "C" {  extern "C" {
16  #include "paso/SystemMatrix.h"  #include <paso/SystemMatrix.h>
17  }  }
18    
19  #if USE_SILO  #if USE_SILO
# Line 29  using namespace std; Line 29  using namespace std;
29    
30  namespace ripley {  namespace ripley {
31    
32  Brick::Brick(int n0, int n1, int n2, double l0, double l1, double l2, int d0,  Brick::Brick(int n0, int n1, int n2, double x0, double y0, double z0,
33               int d1, int d2) :               double x1, double y1, double z1, int d0, int d1, int d2) :
34      RipleyDomain(3),      RipleyDomain(3),
35      m_gNE0(n0),      m_gNE0(n0),
36      m_gNE1(n1),      m_gNE1(n1),
37      m_gNE2(n2),      m_gNE2(n2),
38      m_l0(l0),      m_x0(x0),
39      m_l1(l1),      m_y0(y0),
40      m_l2(l2),      m_z0(z0),
41        m_l0(x1-x0),
42        m_l1(y1-y0),
43        m_l2(z1-z0),
44      m_NX(d0),      m_NX(d0),
45      m_NY(d1),      m_NY(d1),
46      m_NZ(d2)      m_NZ(d2)
# Line 95  Brick::Brick(int n0, int n1, int n2, dou Line 98  Brick::Brick(int n0, int n1, int n2, dou
98    
99  Brick::~Brick()  Brick::~Brick()
100  {  {
101        Paso_SystemMatrixPattern_free(m_pattern);
102        Paso_Connector_free(m_connector);
103  }  }
104    
105  string Brick::getDescription() const  string Brick::getDescription() const
# Line 108  bool Brick::operator==(const AbstractDom Line 113  bool Brick::operator==(const AbstractDom
113      if (o) {      if (o) {
114          return (RipleyDomain::operator==(other) &&          return (RipleyDomain::operator==(other) &&
115                  m_gNE0==o->m_gNE0 && m_gNE1==o->m_gNE1 && m_gNE2==o->m_gNE2                  m_gNE0==o->m_gNE0 && m_gNE1==o->m_gNE1 && m_gNE2==o->m_gNE2
116                    && m_x0==o->m_x0 && m_y0==o->m_y0 && m_z0==o->m_z0
117                  && m_l0==o->m_l0 && m_l1==o->m_l1 && m_l2==o->m_l2                  && m_l0==o->m_l0 && m_l1==o->m_l1 && m_l2==o->m_l2
118                  && m_NX==o->m_NX && m_NY==o->m_NY && m_NZ==o->m_NZ);                  && m_NX==o->m_NX && m_NY==o->m_NY && m_NZ==o->m_NZ);
119      }      }
# Line 123  void Brick::dump(const string& fileName) Line 129  void Brick::dump(const string& fileName)
129          fn+=".silo";          fn+=".silo";
130      }      }
131    
     const int NUM_SILO_FILES = 1;  
     const char* blockDirFmt = "/block%04d";  
132      int driver=DB_HDF5;          int driver=DB_HDF5;    
133      string siloPath;      string siloPath;
134      DBfile* dbfile = NULL;      DBfile* dbfile = NULL;
135    
136  #ifdef ESYS_MPI  #ifdef ESYS_MPI
137      PMPIO_baton_t* baton = NULL;      PMPIO_baton_t* baton = NULL;
138        const int NUM_SILO_FILES = 1;
139        const char* blockDirFmt = "/block%04d";
140  #endif  #endif
141    
142      if (m_mpiInfo->size > 1) {      if (m_mpiInfo->size > 1) {
# Line 256  void Brick::dump(const string& fileName) Line 262  void Brick::dump(const string& fileName)
262      }      }
263    
264  #else // USE_SILO  #else // USE_SILO
265      throw RipleyException("dump(): no Silo support");      throw RipleyException("dump: no Silo support");
266  #endif  #endif
267  }  }
268    
# Line 280  const int* Brick::borrowSampleReferenceI Line 286  const int* Brick::borrowSampleReferenceI
286      }      }
287    
288      stringstream msg;      stringstream msg;
289      msg << "borrowSampleReferenceIDs() not implemented for function space type "      msg << "borrowSampleReferenceIDs: invalid function space type "<<fsType;
         << fsType;  
290      throw RipleyException(msg.str());      throw RipleyException(msg.str());
291  }  }
292    
# Line 335  bool Brick::ownSample(int fsType, index_ Line 340  bool Brick::ownSample(int fsType, index_
340      }      }
341    
342      stringstream msg;      stringstream msg;
343      msg << "ownSample() not implemented for "      msg << "ownSample: invalid function space type " << fsType;
         << functionSpaceTypeAsString(fsType);  
344      throw RipleyException(msg.str());      throw RipleyException(msg.str());
345  }  }
346    
# Line 509  void Brick::setToNormal(escript::Data& o Line 513  void Brick::setToNormal(escript::Data& o
513    
514      } else {      } else {
515          stringstream msg;          stringstream msg;
516          msg << "setToNormal() not implemented for "          msg << "setToNormal: invalid function space type "
517              << functionSpaceTypeAsString(out.getFunctionSpace().getTypeCode());              << out.getFunctionSpace().getTypeCode();
518          throw RipleyException(msg.str());          throw RipleyException(msg.str());
519      }      }
520  }  }
# Line 608  void Brick::setToSize(escript::Data& out Line 612  void Brick::setToSize(escript::Data& out
612    
613      } else {      } else {
614          stringstream msg;          stringstream msg;
615          msg << "setToSize() not implemented for "          msg << "setToSize: invalid function space type "
616              << functionSpaceTypeAsString(out.getFunctionSpace().getTypeCode());              << out.getFunctionSpace().getTypeCode();
617          throw RipleyException(msg.str());          throw RipleyException(msg.str());
618      }      }
619  }  }
# Line 617  void Brick::setToSize(escript::Data& out Line 621  void Brick::setToSize(escript::Data& out
621  Paso_SystemMatrixPattern* Brick::getPattern(bool reducedRowOrder,  Paso_SystemMatrixPattern* Brick::getPattern(bool reducedRowOrder,
622                                              bool reducedColOrder) const                                              bool reducedColOrder) const
623  {  {
624        /* FIXME: reduced
625      if (reducedRowOrder || reducedColOrder)      if (reducedRowOrder || reducedColOrder)
626          throw RipleyException("getPattern() not implemented for reduced order");          throw RipleyException("getPattern() not implemented for reduced order");
627        */
628      return m_pattern;      return m_pattern;
629  }  }
630    
# Line 696  IndexVector Brick::getNumSubdivisionsPer Line 701  IndexVector Brick::getNumSubdivisionsPer
701  pair<double,double> Brick::getFirstCoordAndSpacing(dim_t dim) const  pair<double,double> Brick::getFirstCoordAndSpacing(dim_t dim) const
702  {  {
703      if (dim==0)      if (dim==0)
704          return pair<double,double>((m_l0*m_offset0)/m_gNE0, m_l0/m_gNE0);          return pair<double,double>(m_x0+(m_l0*m_offset0)/m_gNE0, m_l0/m_gNE0);
705      else if (dim==1)      else if (dim==1)
706          return pair<double,double>((m_l1*m_offset1)/m_gNE1, m_l1/m_gNE1);          return pair<double,double>(m_y0+(m_l1*m_offset1)/m_gNE1, m_l1/m_gNE1);
707      else if (dim==2)      else if (dim==2)
708          return pair<double,double>((m_l2*m_offset2)/m_gNE2, m_l2/m_gNE2);          return pair<double,double>(m_z0+(m_l2*m_offset2)/m_gNE2, m_l2/m_gNE2);
709    
710      throw RipleyException("getFirstCoordAndSpacing(): invalid argument");      throw RipleyException("getFirstCoordAndSpacing: invalid argument");
711  }  }
712    
713  //protected  //protected
# Line 754  void Brick::assembleGradient(escript::Da Line 759  void Brick::assembleGradient(escript::Da
759      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
760      const double h0 = m_l0/m_gNE0;      const double h0 = m_l0/m_gNE0;
761      const double h1 = m_l1/m_gNE1;      const double h1 = m_l1/m_gNE1;
762      const double h2 = m_l1/m_gNE2;      const double h2 = m_l2/m_gNE2;
763      const double C0 = .044658198738520451079;      const double C0 = .044658198738520451079;
764      const double C1 = .16666666666666666667;      const double C1 = .16666666666666666667;
765      const double C2 = .21132486540518711775;      const double C2 = .21132486540518711775;
# Line 1525  void Brick::populateSampleIds() Line 1530  void Brick::populateSampleIds()
1530      // globally      // globally
1531    
1532      // build node distribution vector first.      // build node distribution vector first.
1533      // rank i owns m_nodeDistribution[i+1]-nodeDistribution[i] nodes      // rank i owns m_nodeDistribution[i+1]-nodeDistribution[i] nodes which is
1534        // constant for all ranks in this implementation
1535      m_nodeDistribution.assign(m_mpiInfo->size+1, 0);      m_nodeDistribution.assign(m_mpiInfo->size+1, 0);
1536      const dim_t numDOF=getNumDOF();      const dim_t numDOF=getNumDOF();
1537      for (dim_t k=1; k<m_mpiInfo->size; k++) {      for (dim_t k=1; k<m_mpiInfo->size; k++) {
# Line 1913  void Brick::createPattern() Line 1919  void Brick::createPattern()
1919      Paso_Pattern_free(rowPattern);      Paso_Pattern_free(rowPattern);
1920  }  }
1921    
1922    //private
1923    void Brick::addToMatrixAndRHS(Paso_SystemMatrix* S, escript::Data& F,
1924             const vector<double>& EM_S, const vector<double>& EM_F, bool addS,
1925             bool addF, index_t firstNode, dim_t nEq, dim_t nComp) const
1926    {
1927        IndexVector rowIndex;
1928        rowIndex.push_back(m_dofMap[firstNode]);
1929        rowIndex.push_back(m_dofMap[firstNode+1]);
1930        rowIndex.push_back(m_dofMap[firstNode+m_N0]);
1931        rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);
1932        rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);
1933        rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);
1934        rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);
1935        rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);
1936        if (addF) {
1937            double *F_p=F.getSampleDataRW(0);
1938            for (index_t i=0; i<rowIndex.size(); i++) {
1939                if (rowIndex[i]<getNumDOF()) {
1940                    for (index_t eq=0; eq<nEq; eq++) {
1941                        F_p[INDEX2(eq, rowIndex[i], nEq)]+=EM_F[INDEX2(eq,i,nEq)];
1942                    }
1943                }
1944            }
1945        }
1946        if (addS) {
1947            addToSystemMatrix(S, rowIndex, nEq, rowIndex, nComp, EM_S);
1948        }
1949    }
1950    
1951  //protected  //protected
1952  void Brick::interpolateNodesOnElements(escript::Data& out, escript::Data& in,  void Brick::interpolateNodesOnElements(escript::Data& out, escript::Data& in,
1953                                         bool reduced) const                                         bool reduced) const
# Line 3252  void Brick::assemblePDESingle(Paso_Syste Line 3287  void Brick::assemblePDESingle(Paso_Syste
3287                                  const double tmp380_1 = tmp195_0*w23;                                  const double tmp380_1 = tmp195_0*w23;
3288                                  const double tmp456_1 = tmp218_0*w27;                                  const double tmp456_1 = tmp218_0*w27;
3289                                  const double tmp288_1 = tmp154_0*w29;                                  const double tmp288_1 = tmp154_0*w29;
3290                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(0,0,8)]+=tmp264_1 + tmp268_1 + tmp292_1 + tmp327_1 + tmp342_1 + tmp369_1 + tmp377_1 + tmp379_1 + tmp384_1 + tmp389_1 + tmp390_1 + tmp394_1 + tmp415_1 + tmp424_1 + tmp427_1 + tmp434_1 + tmp447_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1 + tmp452_1 + tmp453_1 + tmp454_1;
3291                                  EM_S[INDEX2(4,7,8)]+=tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;                                  EM_S[INDEX2(1,0,8)]+=tmp140_1 + tmp147_1 + tmp182_1 + tmp196_1 + tmp200_1 + tmp203_1 + tmp206_1 + tmp207_1 + tmp208_1 + tmp224_1 + tmp22_1 + tmp275_1 + tmp277_1 + tmp279_1 + tmp441_1 + tmp444_1 + tmp473_1 + tmp474_1 + tmp491_1 + tmp495_1 + tmp498_1 + tmp500_1 + tmp506_1 + tmp507_1 + tmp508_1 + tmp509_1 + tmp510_1 + tmp511_1 + tmp512_1 + tmp513_1;
3292                                  EM_S[INDEX2(1,3,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1 + tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;                                  EM_S[INDEX2(2,0,8)]+=tmp102_1 + tmp11_1 + tmp193_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1 + tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp52_1 + tmp54_1 + tmp57_1 + tmp68_1 + tmp70_1 + tmp76_1 + tmp94_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp100_1 + tmp101_1 + tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp59_1 + tmp63_1 + tmp67_1 + tmp74_1 + tmp75_1 + tmp80_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1 + tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;  
3293                                  EM_S[INDEX2(3,0,8)]+=tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp120_1 + tmp121_1 + tmp35_1 + tmp38_1 + tmp41_1 + tmp42_1 + tmp47_1 + tmp50_1;                                  EM_S[INDEX2(3,0,8)]+=tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp120_1 + tmp121_1 + tmp35_1 + tmp38_1 + tmp41_1 + tmp42_1 + tmp47_1 + tmp50_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp122_1 + tmp123_1 + tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp132_1 + tmp152_1 + tmp153_1 + tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp74_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1 + tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp31_1 + tmp34_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp41_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp49_1 + tmp50_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp104_1 + tmp158_1 + tmp16_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1 + tmp186_1 + tmp187_1 + tmp188_1 + tmp19_1 + tmp24_1 + tmp28_1 + tmp2_1 + tmp59_1 + tmp86_1 + tmp88_1 + tmp8_1 + tmp91_1 + tmp92_1 + tmp99_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp132_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp159_1 + tmp161_1 + tmp189_1 + tmp18_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp13_1 + tmp158_1 + tmp182_1 + tmp184_1 + tmp185_1 + tmp186_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1 + tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp4_1 + tmp56_1 + tmp58_1 + tmp59_1 + tmp62_1 + tmp64_1 + tmp72_1 + tmp79_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp12_1 + tmp139_1 + tmp13_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp20_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp55_1 + tmp62_1 + tmp64_1 + tmp72_1 + tmp79_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp153_1 + tmp155_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp18_1 + tmp222_1 + tmp223_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp74_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp107_1 + tmp109_1 + tmp110_1 + tmp115_1 + tmp116_1 + tmp117_1 + tmp166_1 + tmp169_1 + tmp227_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp41_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp112_1 + tmp113_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp35_1 + tmp46_1 + tmp49_1 + tmp50_1;  
3294                                  EM_S[INDEX2(4,0,8)]+=tmp104_1 + tmp105_1 + tmp124_1 + tmp130_1 + tmp138_1 + tmp139_1 + tmp148_1 + tmp150_1 + tmp151_1 + tmp175_1 + tmp181_1 + tmp18_1 + tmp195_1 + tmp204_1 + tmp20_1 + tmp216_1 + tmp218_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp80_1 + tmp85_1 + tmp91_1 + tmp92_1 + tmp99_1;                                  EM_S[INDEX2(4,0,8)]+=tmp104_1 + tmp105_1 + tmp124_1 + tmp130_1 + tmp138_1 + tmp139_1 + tmp148_1 + tmp150_1 + tmp151_1 + tmp175_1 + tmp181_1 + tmp18_1 + tmp195_1 + tmp204_1 + tmp20_1 + tmp216_1 + tmp218_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp80_1 + tmp85_1 + tmp91_1 + tmp92_1 + tmp99_1;
3295                                    EM_S[INDEX2(5,0,8)]+=tmp229_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp242_1 + tmp334_1 + tmp339_1 + tmp347_1 + tmp349_1 + tmp414_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp422_1 + tmp440_1 + tmp461_1 + tmp462_1 + tmp463_1 + tmp464_1 + tmp465_1 + tmp466_1;
3296                                    EM_S[INDEX2(6,0,8)]+=tmp163_1 + tmp166_1 + tmp169_1 + tmp172_1 + tmp234_1 + tmp236_1 + tmp240_1 + tmp248_1 + tmp250_1 + tmp254_1 + tmp338_1 + tmp340_1 + tmp407_1 + tmp416_1 + tmp421_1 + tmp484_1 + tmp485_1 + tmp486_1 + tmp487_1 + tmp488_1 + tmp489_1 + tmp490_1;
3297                                    EM_S[INDEX2(7,0,8)]+=tmp132_1 + tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp518_1 + tmp519_1 + tmp520_1 + tmp521_1 + tmp522_1 + tmp523_1 + tmp74_1;
3298                                    EM_S[INDEX2(0,1,8)]+=tmp130_1 + tmp138_1 + tmp140_1 + tmp147_1 + tmp148_1 + tmp151_1 + tmp218_1 + tmp224_1 + tmp258_1 + tmp259_1 + tmp277_1 + tmp302_1 + tmp307_1 + tmp310_1 + tmp325_1 + tmp354_1 + tmp359_1 + tmp441_1 + tmp444_1 + tmp507_1 + tmp508_1 + tmp511_1 + tmp512_1 + tmp52_1 + tmp57_1 + tmp61_1 + tmp67_1 + tmp70_1 + tmp71_1 + tmp76_1;
3299                                    EM_S[INDEX2(1,1,8)]+=tmp109_1 + tmp116_1 + tmp284_1 + tmp294_1 + tmp300_1 + tmp334_1 + tmp339_1 + tmp375_1 + tmp384_1 + tmp387_1 + tmp388_1 + tmp425_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1 + tmp434_1 + tmp435_1 + tmp436_1 + tmp437_1;
3300                                    EM_S[INDEX2(2,1,8)]+=tmp107_1 + tmp110_1 + tmp112_1 + tmp113_1 + tmp115_1 + tmp117_1 + tmp118_1 + tmp120_1 + tmp166_1 + tmp167_1 + tmp169_1 + tmp228_1 + tmp234_1 + tmp236_1 + tmp239_1 + tmp264_1 + tmp268_1 + tmp35_1 + tmp41_1 + tmp501_1 + tmp502_1 + tmp50_1;
3301                                    EM_S[INDEX2(3,1,8)]+=tmp136_1 + tmp14_1 + tmp15_1 + tmp21_1 + tmp25_1 + tmp26_1 + tmp279_1 + tmp29_1 + tmp356_1 + tmp357_1 + tmp358_1 + tmp491_1 + tmp492_1 + tmp495_1 + tmp496_1 + tmp498_1 + tmp500_1 + tmp510_1 + tmp513_1 + tmp54_1 + tmp5_1 + tmp65_1 + tmp66_1 + tmp68_1 + tmp69_1 + tmp73_1 + tmp74_1 + tmp75_1 + tmp77_1 + tmp78_1;
3302                                    EM_S[INDEX2(4,1,8)]+=tmp229_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp242_1 + tmp248_1 + tmp250_1 + tmp362_1 + tmp403_1 + tmp410_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1 + tmp422_1 + tmp423_1 + tmp424_1;
3303                                    EM_S[INDEX2(5,1,8)]+=tmp13_1 + tmp158_1 + tmp182_1 + tmp184_1 + tmp185_1 + tmp186_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1 + tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp4_1 + tmp56_1 + tmp58_1 + tmp59_1 + tmp62_1 + tmp64_1 + tmp72_1 + tmp79_1;
3304                                    EM_S[INDEX2(6,1,8)]+=tmp132_1 + tmp155_1 + tmp159_1 + tmp161_1 + tmp18_1 + tmp193_1 + tmp222_1 + tmp223_1 + tmp521_1 + tmp522_1 + tmp528_1 + tmp529_1;
3305                                    EM_S[INDEX2(7,1,8)]+=tmp108_1 + tmp121_1 + tmp297_1 + tmp299_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp40_1 + tmp42_1 + tmp461_1 + tmp466_1 + tmp467_1 + tmp468_1 + tmp469_1 + tmp47_1 + tmp48_1;
3306                                    EM_S[INDEX2(0,2,8)]+=tmp102_1 + tmp104_1 + tmp141_1 + tmp176_1 + tmp186_1 + tmp188_1 + tmp193_1 + tmp216_1 + tmp260_1 + tmp261_1 + tmp275_1 + tmp304_1 + tmp313_1 + tmp316_1 + tmp317_1 + tmp320_1 + tmp491_1 + tmp495_1 + tmp497_1 + tmp498_1 + tmp499_1 + tmp500_1 + tmp506_1 + tmp509_1 + tmp54_1 + tmp68_1 + tmp91_1 + tmp92_1 + tmp94_1 + tmp99_1;
3307                                  EM_S[INDEX2(1,2,8)]+=tmp107_1 + tmp108_1 + tmp110_1 + tmp114_1 + tmp115_1 + tmp117_1 + tmp119_1 + tmp121_1 + tmp229_1 + tmp231_1 + tmp233_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp264_1 + tmp265_1 + tmp266_1 + tmp267_1 + tmp268_1 + tmp41_1 + tmp42_1 + tmp47_1;                                  EM_S[INDEX2(1,2,8)]+=tmp107_1 + tmp108_1 + tmp110_1 + tmp114_1 + tmp115_1 + tmp117_1 + tmp119_1 + tmp121_1 + tmp229_1 + tmp231_1 + tmp233_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp264_1 + tmp265_1 + tmp266_1 + tmp267_1 + tmp268_1 + tmp41_1 + tmp42_1 + tmp47_1;
3308                                  EM_S[INDEX2(6,7,8)]+=tmp122_1 + tmp125_1 + tmp131_1 + tmp134_1 + tmp142_1 + tmp146_1 + tmp16_1 + tmp174_1 + tmp182_1 + tmp187_1 + tmp224_1 + tmp22_1 + tmp24_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1 + tmp280_1 + tmp281_1 + tmp28_1 + tmp6_1 + tmp7_1 + tmp8_1;                                  EM_S[INDEX2(2,2,8)]+=tmp109_1 + tmp116_1 + tmp283_1 + tmp287_1 + tmp295_1 + tmp338_1 + tmp340_1 + tmp345_1 + tmp353_1 + tmp366_1 + tmp367_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1;
3309                                    EM_S[INDEX2(3,2,8)]+=tmp132_1 + tmp137_1 + tmp16_1 + tmp177_1 + tmp178_1 + tmp17_1 + tmp185_1 + tmp24_1 + tmp278_1 + tmp27_1 + tmp281_1 + tmp28_1 + tmp308_1 + tmp312_1 + tmp314_1 + tmp3_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp52_1 + tmp53_1 + tmp57_1 + tmp60_1 + tmp63_1 + tmp70_1 + tmp76_1 + tmp8_1;
3310                                    EM_S[INDEX2(4,2,8)]+=tmp163_1 + tmp166_1 + tmp169_1 + tmp172_1 + tmp234_1 + tmp236_1 + tmp343_1 + tmp347_1 + tmp349_1 + tmp351_1 + tmp407_1 + tmp450_1 + tmp451_1 + tmp464_1 + tmp465_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp503_1 + tmp504_1 + tmp505_1;
3311                                    EM_S[INDEX2(5,2,8)]+=tmp155_1 + tmp159_1 + tmp161_1 + tmp189_1 + tmp18_1 + tmp190_1 + tmp224_1 + tmp519_1 + tmp523_1 + tmp526_1 + tmp527_1 + tmp74_1;
3312                                    EM_S[INDEX2(6,2,8)]+=tmp145_1 + tmp158_1 + tmp173_1 + tmp175_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp183_1 + tmp184_1 + tmp19_1 + tmp213_1 + tmp217_1 + tmp219_1 + tmp221_1 + tmp2_1 + tmp303_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp319_1 + tmp321_1 + tmp323_1 + tmp325_1 + tmp326_1 + tmp358_1 + tmp493_1 + tmp494_1 + tmp524_1 + tmp525_1;
3313                                    EM_S[INDEX2(7,2,8)]+=tmp112_1 + tmp113_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp35_1 + tmp46_1 + tmp49_1 + tmp50_1;
3314                                    EM_S[INDEX2(0,3,8)]+=tmp107_1 + tmp109_1 + tmp110_1 + tmp115_1 + tmp116_1 + tmp117_1 + tmp166_1 + tmp169_1 + tmp227_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp41_1;
3315                                    EM_S[INDEX2(1,3,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1 + tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
3316                                    EM_S[INDEX2(2,3,8)]+=tmp132_1 + tmp136_1 + tmp137_1 + tmp139_1 + tmp141_1 + tmp145_1 + tmp210_1 + tmp213_1 + tmp217_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp278_1 + tmp281_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp491_1 + tmp492_1 + tmp493_1 + tmp494_1 + tmp495_1 + tmp496_1 + tmp497_1 + tmp498_1 + tmp499_1 + tmp500_1;
3317                                  EM_S[INDEX2(3,3,8)]+=tmp249_1 + tmp255_1 + tmp264_1 + tmp268_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1 + tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1 + tmp300_1 + tmp301_1;                                  EM_S[INDEX2(3,3,8)]+=tmp249_1 + tmp255_1 + tmp264_1 + tmp268_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1 + tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1 + tmp300_1 + tmp301_1;
3318                                  EM_S[INDEX2(2,0,8)]+=tmp102_1 + tmp11_1 + tmp193_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1 + tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp52_1 + tmp54_1 + tmp57_1 + tmp68_1 + tmp70_1 + tmp76_1 + tmp94_1;                                  EM_S[INDEX2(4,3,8)]+=tmp152_1 + tmp154_1 + tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp193_1 + tmp224_1 + tmp526_1 + tmp527_1 + tmp528_1 + tmp529_1;
3319                                  EM_S[INDEX2(7,6,8)]+=tmp101_1 + tmp125_1 + tmp134_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp221_1 + tmp224_1 + tmp270_1 + tmp271_1 + tmp274_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp281_1 + tmp310_1 + tmp322_1 + tmp323_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp67_1 + tmp82_1 + tmp87_1 + tmp90_1 + tmp97_1 + tmp98_1;                                  EM_S[INDEX2(5,3,8)]+=tmp108_1 + tmp121_1 + tmp245_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp387_1 + tmp388_1 + tmp403_1 + tmp404_1 + tmp405_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp40_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp42_1 + tmp47_1 + tmp48_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp162_1 + tmp170_1 + tmp284_1 + tmp287_1 + tmp290_1 + tmp292_1 + tmp293_1 + tmp298_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1 + tmp340_1 + tmp341_1 + tmp342_1;  
3320                                  EM_S[INDEX2(6,3,8)]+=tmp112_1 + tmp113_1 + tmp241_1 + tmp242_1 + tmp246_1 + tmp247_1 + tmp252_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1 + tmp35_1 + tmp46_1 + tmp49_1 + tmp50_1;                                  EM_S[INDEX2(6,3,8)]+=tmp112_1 + tmp113_1 + tmp241_1 + tmp242_1 + tmp246_1 + tmp247_1 + tmp252_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1 + tmp35_1 + tmp46_1 + tmp49_1 + tmp50_1;
3321                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
3322                                    EM_S[INDEX2(0,4,8)]+=tmp11_1 + tmp175_1 + tmp17_1 + tmp181_1 + tmp18_1 + tmp195_1 + tmp200_1 + tmp203_1 + tmp204_1 + tmp206_1 + tmp208_1 + tmp20_1 + tmp22_1 + tmp256_1 + tmp257_1 + tmp262_1 + tmp263_1 + tmp26_1 + tmp305_1 + tmp306_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp470_1 + tmp471_1 + tmp472_1 + tmp473_1 + tmp474_1 + tmp475_1;
3323                                    EM_S[INDEX2(1,4,8)]+=tmp118_1 + tmp120_1 + tmp242_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp414_1 + tmp415_1 + tmp417_1 + tmp418_1 + tmp422_1 + tmp424_1 + tmp461_1 + tmp464_1 + tmp465_1 + tmp466_1 + tmp482_1 + tmp483_1 + tmp50_1;
3324                                    EM_S[INDEX2(2,4,8)]+=tmp114_1 + tmp119_1 + tmp240_1 + tmp248_1 + tmp250_1 + tmp254_1 + tmp32_1 + tmp407_1 + tmp411_1 + tmp416_1 + tmp421_1 + tmp42_1 + tmp450_1 + tmp451_1 + tmp47_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp51_1 + tmp538_1 + tmp539_1;
3325                                    EM_S[INDEX2(3,4,8)]+=tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp518_1 + tmp520_1;
3326                                    EM_S[INDEX2(4,4,8)]+=tmp162_1 + tmp170_1 + tmp284_1 + tmp287_1 + tmp290_1 + tmp292_1 + tmp293_1 + tmp298_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1 + tmp340_1 + tmp341_1 + tmp342_1;
3327                                    EM_S[INDEX2(5,4,8)]+=tmp122_1 + tmp123_1 + tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1;
3328                                    EM_S[INDEX2(6,4,8)]+=tmp100_1 + tmp101_1 + tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp59_1 + tmp63_1 + tmp67_1 + tmp74_1 + tmp75_1 + tmp80_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1 + tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;
3329                                    EM_S[INDEX2(7,4,8)]+=tmp163_1 + tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp172_1 + tmp229_1 + tmp232_1 + tmp238_1 + tmp31_1 + tmp33_1 + tmp34_1 + tmp363_1 + tmp364_1 + tmp419_1 + tmp41_1 + tmp420_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp530_1 + tmp531_1;
3330                                    EM_S[INDEX2(0,5,8)]+=tmp118_1 + tmp120_1 + tmp242_1 + tmp248_1 + tmp250_1 + tmp253_1 + tmp334_1 + tmp339_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp403_1 + tmp410_1 + tmp414_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp421_1 + tmp422_1 + tmp50_1 + tmp536_1 + tmp537_1;
3331                                  EM_S[INDEX2(1,5,8)]+=tmp127_1 + tmp128_1 + tmp130_1 + tmp138_1 + tmp13_1 + tmp145_1 + tmp148_1 + tmp14_1 + tmp151_1 + tmp158_1 + tmp15_1 + tmp184_1 + tmp194_1 + tmp195_1 + tmp201_1 + tmp202_1 + tmp204_1 + tmp205_1 + tmp21_1 + tmp25_1 + tmp319_1 + tmp325_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp4_1;                                  EM_S[INDEX2(1,5,8)]+=tmp127_1 + tmp128_1 + tmp130_1 + tmp138_1 + tmp13_1 + tmp145_1 + tmp148_1 + tmp14_1 + tmp151_1 + tmp158_1 + tmp15_1 + tmp184_1 + tmp194_1 + tmp195_1 + tmp201_1 + tmp202_1 + tmp204_1 + tmp205_1 + tmp21_1 + tmp25_1 + tmp319_1 + tmp325_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp4_1;
3332                                  EM_S[INDEX2(3,6,8)]+=tmp229_1 + tmp231_1 + tmp233_1 + tmp238_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp252_1 + tmp254_1 + tmp345_1 + tmp353_1 + tmp361_1 + tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1;                                  EM_S[INDEX2(2,5,8)]+=tmp153_1 + tmp155_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp18_1 + tmp222_1 + tmp223_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp74_1;
3333                                  EM_S[INDEX2(2,2,8)]+=tmp109_1 + tmp116_1 + tmp283_1 + tmp287_1 + tmp295_1 + tmp338_1 + tmp340_1 + tmp345_1 + tmp353_1 + tmp366_1 + tmp367_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1;                                  EM_S[INDEX2(3,5,8)]+=tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp228_1 + tmp239_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp387_1 + tmp388_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp461_1 + tmp466_1 + tmp504_1 + tmp516_1 + tmp517_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp162_1 + tmp170_1 + tmp282_1 + tmp292_1 + tmp301_1 + tmp345_1 + tmp353_1 + tmp369_1 + tmp381_1 + tmp382_1 + tmp383_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1 + tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp101_1 + tmp10_1 + tmp11_1 + tmp14_1 + tmp15_1 + tmp193_1 + tmp21_1 + tmp25_1 + tmp310_1 + tmp312_1 + tmp317_1 + tmp319_1 + tmp322_1 + tmp324_1 + tmp355_1 + tmp360_1 + tmp397_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1 + tmp402_1 + tmp66_1 + tmp77_1 + tmp82_1 + tmp84_1 + tmp87_1 + tmp95_1 + tmp97_1 + tmp9_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp108_1 + tmp121_1 + tmp245_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp387_1 + tmp388_1 + tmp403_1 + tmp404_1 + tmp405_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp40_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp42_1 + tmp47_1 + tmp48_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp229_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp242_1 + tmp248_1 + tmp250_1 + tmp362_1 + tmp403_1 + tmp410_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1 + tmp422_1 + tmp423_1 + tmp424_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp109_1 + tmp116_1 + tmp284_1 + tmp294_1 + tmp300_1 + tmp334_1 + tmp339_1 + tmp375_1 + tmp384_1 + tmp387_1 + tmp388_1 + tmp425_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1 + tmp434_1 + tmp435_1 + tmp436_1 + tmp437_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp229_1 + tmp231_1 + tmp233_1 + tmp238_1 + tmp241_1 + tmp242_1 + tmp246_1 + tmp247_1 + tmp249_1 + tmp252_1 + tmp255_1 + tmp343_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp363_1 + tmp364_1 + tmp438_1 + tmp439_1 + tmp440_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp132_1 + tmp137_1 + tmp16_1 + tmp177_1 + tmp178_1 + tmp17_1 + tmp185_1 + tmp24_1 + tmp278_1 + tmp27_1 + tmp281_1 + tmp28_1 + tmp308_1 + tmp312_1 + tmp314_1 + tmp3_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp52_1 + tmp53_1 + tmp57_1 + tmp60_1 + tmp63_1 + tmp70_1 + tmp76_1 + tmp8_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp264_1 + tmp268_1 + tmp292_1 + tmp327_1 + tmp342_1 + tmp369_1 + tmp377_1 + tmp379_1 + tmp384_1 + tmp389_1 + tmp390_1 + tmp394_1 + tmp415_1 + tmp424_1 + tmp427_1 + tmp434_1 + tmp447_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1 + tmp452_1 + tmp453_1 + tmp454_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp249_1 + tmp255_1 + tmp284_1 + tmp335_1 + tmp33_1 + tmp341_1 + tmp366_1 + tmp375_1 + tmp378_1 + tmp381_1 + tmp384_1 + tmp392_1 + tmp431_1 + tmp433_1 + tmp435_1 + tmp44_1 + tmp450_1 + tmp451_1 + tmp455_1 + tmp456_1 + tmp457_1 + tmp458_1 + tmp459_1 + tmp460_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp229_1 + tmp235_1 + tmp237_1 + tmp238_1 + tmp242_1 + tmp334_1 + tmp339_1 + tmp347_1 + tmp349_1 + tmp414_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp422_1 + tmp440_1 + tmp461_1 + tmp462_1 + tmp463_1 + tmp464_1 + tmp465_1 + tmp466_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp108_1 + tmp121_1 + tmp297_1 + tmp299_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp40_1 + tmp42_1 + tmp461_1 + tmp466_1 + tmp467_1 + tmp468_1 + tmp469_1 + tmp47_1 + tmp48_1;  
3334                                  EM_S[INDEX2(4,5,8)]+=tmp101_1 + tmp125_1 + tmp126_1 + tmp129_1 + tmp132_1 + tmp134_1 + tmp137_1 + tmp140_1 + tmp144_1 + tmp147_1 + tmp149_1 + tmp17_1 + tmp185_1 + tmp198_1 + tmp199_1 + tmp200_1 + tmp203_1 + tmp206_1 + tmp208_1 + tmp312_1 + tmp398_1 + tmp400_1 + tmp470_1 + tmp471_1 + tmp63_1 + tmp82_1 + tmp83_1 + tmp87_1 + tmp89_1 + tmp97_1;                                  EM_S[INDEX2(4,5,8)]+=tmp101_1 + tmp125_1 + tmp126_1 + tmp129_1 + tmp132_1 + tmp134_1 + tmp137_1 + tmp140_1 + tmp144_1 + tmp147_1 + tmp149_1 + tmp17_1 + tmp185_1 + tmp198_1 + tmp199_1 + tmp200_1 + tmp203_1 + tmp206_1 + tmp208_1 + tmp312_1 + tmp398_1 + tmp400_1 + tmp470_1 + tmp471_1 + tmp63_1 + tmp82_1 + tmp83_1 + tmp87_1 + tmp89_1 + tmp97_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp11_1 + tmp175_1 + tmp17_1 + tmp181_1 + tmp18_1 + tmp195_1 + tmp200_1 + tmp203_1 + tmp204_1 + tmp206_1 + tmp208_1 + tmp20_1 + tmp22_1 + tmp256_1 + tmp257_1 + tmp262_1 + tmp263_1 + tmp26_1 + tmp305_1 + tmp306_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp470_1 + tmp471_1 + tmp472_1 + tmp473_1 + tmp474_1 + tmp475_1;  
3335                                  EM_S[INDEX2(5,5,8)]+=tmp287_1 + tmp297_1 + tmp299_1 + tmp328_1 + tmp336_1 + tmp33_1 + tmp369_1 + tmp372_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp385_1 + tmp391_1 + tmp415_1 + tmp424_1 + tmp425_1 + tmp436_1 + tmp44_1 + tmp476_1 + tmp477_1 + tmp478_1 + tmp479_1 + tmp480_1 + tmp481_1;                                  EM_S[INDEX2(5,5,8)]+=tmp287_1 + tmp297_1 + tmp299_1 + tmp328_1 + tmp336_1 + tmp33_1 + tmp369_1 + tmp372_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp385_1 + tmp391_1 + tmp415_1 + tmp424_1 + tmp425_1 + tmp436_1 + tmp44_1 + tmp476_1 + tmp477_1 + tmp478_1 + tmp479_1 + tmp480_1 + tmp481_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp118_1 + tmp120_1 + tmp242_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp414_1 + tmp415_1 + tmp417_1 + tmp418_1 + tmp422_1 + tmp424_1 + tmp461_1 + tmp464_1 + tmp465_1 + tmp466_1 + tmp482_1 + tmp483_1 + tmp50_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp163_1 + tmp166_1 + tmp169_1 + tmp172_1 + tmp234_1 + tmp236_1 + tmp240_1 + tmp248_1 + tmp250_1 + tmp254_1 + tmp338_1 + tmp340_1 + tmp407_1 + tmp416_1 + tmp421_1 + tmp484_1 + tmp485_1 + tmp486_1 + tmp487_1 + tmp488_1 + tmp489_1 + tmp490_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp122_1 + tmp131_1 + tmp135_1 + tmp141_1 + tmp142_1 + tmp143_1 + tmp146_1 + tmp186_1 + tmp193_1 + tmp197_1 + tmp209_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp269_1 + tmp272_1 + tmp275_1 + tmp317_1 + tmp397_1 + tmp399_1 + tmp401_1 + tmp402_1 + tmp62_1 + tmp64_1 + tmp66_1 + tmp72_1 + tmp77_1 + tmp79_1 + tmp84_1 + tmp95_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp132_1 + tmp136_1 + tmp137_1 + tmp139_1 + tmp141_1 + tmp145_1 + tmp210_1 + tmp213_1 + tmp217_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp278_1 + tmp281_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp491_1 + tmp492_1 + tmp493_1 + tmp494_1 + tmp495_1 + tmp496_1 + tmp497_1 + tmp498_1 + tmp499_1 + tmp500_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp107_1 + tmp110_1 + tmp112_1 + tmp113_1 + tmp115_1 + tmp117_1 + tmp118_1 + tmp120_1 + tmp166_1 + tmp167_1 + tmp169_1 + tmp228_1 + tmp234_1 + tmp236_1 + tmp239_1 + tmp264_1 + tmp268_1 + tmp35_1 + tmp41_1 + tmp501_1 + tmp502_1 + tmp50_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp163_1 + tmp166_1 + tmp169_1 + tmp172_1 + tmp234_1 + tmp236_1 + tmp343_1 + tmp347_1 + tmp349_1 + tmp351_1 + tmp407_1 + tmp450_1 + tmp451_1 + tmp464_1 + tmp465_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp503_1 + tmp504_1 + tmp505_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp140_1 + tmp147_1 + tmp182_1 + tmp196_1 + tmp200_1 + tmp203_1 + tmp206_1 + tmp207_1 + tmp208_1 + tmp224_1 + tmp22_1 + tmp275_1 + tmp277_1 + tmp279_1 + tmp441_1 + tmp444_1 + tmp473_1 + tmp474_1 + tmp491_1 + tmp495_1 + tmp498_1 + tmp500_1 + tmp506_1 + tmp507_1 + tmp508_1 + tmp509_1 + tmp510_1 + tmp511_1 + tmp512_1 + tmp513_1;  
3336                                  EM_S[INDEX2(6,5,8)]+=tmp162_1 + tmp170_1 + tmp229_1 + tmp238_1 + tmp266_1 + tmp31_1 + tmp32_1 + tmp34_1 + tmp363_1 + tmp364_1 + tmp40_1 + tmp419_1 + tmp41_1 + tmp420_1 + tmp42_1 + tmp43_1 + tmp45_1 + tmp47_1 + tmp48_1 + tmp514_1 + tmp515_1 + tmp51_1;                                  EM_S[INDEX2(6,5,8)]+=tmp162_1 + tmp170_1 + tmp229_1 + tmp238_1 + tmp266_1 + tmp31_1 + tmp32_1 + tmp34_1 + tmp363_1 + tmp364_1 + tmp40_1 + tmp419_1 + tmp41_1 + tmp420_1 + tmp42_1 + tmp43_1 + tmp45_1 + tmp47_1 + tmp48_1 + tmp514_1 + tmp515_1 + tmp51_1;
3337                                  EM_S[INDEX2(3,5,8)]+=tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp228_1 + tmp239_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp387_1 + tmp388_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp461_1 + tmp466_1 + tmp504_1 + tmp516_1 + tmp517_1;                                  EM_S[INDEX2(7,5,8)]+=tmp122_1 + tmp131_1 + tmp135_1 + tmp141_1 + tmp142_1 + tmp143_1 + tmp146_1 + tmp186_1 + tmp193_1 + tmp197_1 + tmp209_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp269_1 + tmp272_1 + tmp275_1 + tmp317_1 + tmp397_1 + tmp399_1 + tmp401_1 + tmp402_1 + tmp62_1 + tmp64_1 + tmp66_1 + tmp72_1 + tmp77_1 + tmp79_1 + tmp84_1 + tmp95_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp130_1 + tmp138_1 + tmp140_1 + tmp147_1 + tmp148_1 + tmp151_1 + tmp218_1 + tmp224_1 + tmp258_1 + tmp259_1 + tmp277_1 + tmp302_1 + tmp307_1 + tmp310_1 + tmp325_1 + tmp354_1 + tmp359_1 + tmp441_1 + tmp444_1 + tmp507_1 + tmp508_1 + tmp511_1 + tmp512_1 + tmp52_1 + tmp57_1 + tmp61_1 + tmp67_1 + tmp70_1 + tmp71_1 + tmp76_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp132_1 + tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp518_1 + tmp519_1 + tmp520_1 + tmp521_1 + tmp522_1 + tmp523_1 + tmp74_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp100_1 + tmp102_1 + tmp103_1 + tmp122_1 + tmp123_1 + tmp131_1 + tmp133_1 + tmp136_1 + tmp142_1 + tmp146_1 + tmp26_1 + tmp273_1 + tmp279_1 + tmp280_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp358_1 + tmp472_1 + tmp475_1 + tmp524_1 + tmp525_1 + tmp74_1 + tmp75_1 + tmp84_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp155_1 + tmp159_1 + tmp161_1 + tmp189_1 + tmp18_1 + tmp190_1 + tmp224_1 + tmp519_1 + tmp523_1 + tmp526_1 + tmp527_1 + tmp74_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp132_1 + tmp155_1 + tmp159_1 + tmp161_1 + tmp18_1 + tmp193_1 + tmp222_1 + tmp223_1 + tmp521_1 + tmp522_1 + tmp528_1 + tmp529_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp136_1 + tmp14_1 + tmp15_1 + tmp21_1 + tmp25_1 + tmp26_1 + tmp279_1 + tmp29_1 + tmp356_1 + tmp357_1 + tmp358_1 + tmp491_1 + tmp492_1 + tmp495_1 + tmp496_1 + tmp498_1 + tmp500_1 + tmp510_1 + tmp513_1 + tmp54_1 + tmp5_1 + tmp65_1 + tmp66_1 + tmp68_1 + tmp69_1 + tmp73_1 + tmp74_1 + tmp75_1 + tmp77_1 + tmp78_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp102_1 + tmp104_1 + tmp141_1 + tmp176_1 + tmp186_1 + tmp188_1 + tmp193_1 + tmp216_1 + tmp260_1 + tmp261_1 + tmp275_1 + tmp304_1 + tmp313_1 + tmp316_1 + tmp317_1 + tmp320_1 + tmp491_1 + tmp495_1 + tmp497_1 + tmp498_1 + tmp499_1 + tmp500_1 + tmp506_1 + tmp509_1 + tmp54_1 + tmp68_1 + tmp91_1 + tmp92_1 + tmp94_1 + tmp99_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp163_1 + tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp172_1 + tmp229_1 + tmp232_1 + tmp238_1 + tmp31_1 + tmp33_1 + tmp34_1 + tmp363_1 + tmp364_1 + tmp419_1 + tmp41_1 + tmp420_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp530_1 + tmp531_1;  
3338                                  EM_S[INDEX2(0,6,8)]+=tmp114_1 + tmp119_1 + tmp32_1 + tmp338_1 + tmp340_1 + tmp343_1 + tmp347_1 + tmp349_1 + tmp351_1 + tmp407_1 + tmp42_1 + tmp464_1 + tmp465_1 + tmp469_1 + tmp47_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp51_1 + tmp532_1 + tmp533_1;                                  EM_S[INDEX2(0,6,8)]+=tmp114_1 + tmp119_1 + tmp32_1 + tmp338_1 + tmp340_1 + tmp343_1 + tmp347_1 + tmp349_1 + tmp351_1 + tmp407_1 + tmp42_1 + tmp464_1 + tmp465_1 + tmp469_1 + tmp47_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp51_1 + tmp532_1 + tmp533_1;
3339                                  EM_S[INDEX2(6,2,8)]+=tmp145_1 + tmp158_1 + tmp173_1 + tmp175_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp183_1 + tmp184_1 + tmp19_1 + tmp213_1 + tmp217_1 + tmp219_1 + tmp221_1 + tmp2_1 + tmp303_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp319_1 + tmp321_1 + tmp323_1 + tmp325_1 + tmp326_1 + tmp358_1 + tmp493_1 + tmp494_1 + tmp524_1 + tmp525_1;                                  EM_S[INDEX2(1,6,8)]+=tmp132_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp159_1 + tmp161_1 + tmp189_1 + tmp18_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1;
3340                                  EM_S[INDEX2(4,3,8)]+=tmp152_1 + tmp154_1 + tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp193_1 + tmp224_1 + tmp526_1 + tmp527_1 + tmp528_1 + tmp529_1;                                  EM_S[INDEX2(2,6,8)]+=tmp104_1 + tmp158_1 + tmp16_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1 + tmp186_1 + tmp187_1 + tmp188_1 + tmp19_1 + tmp24_1 + tmp28_1 + tmp2_1 + tmp59_1 + tmp86_1 + tmp88_1 + tmp8_1 + tmp91_1 + tmp92_1 + tmp99_1;
3341                                    EM_S[INDEX2(3,6,8)]+=tmp229_1 + tmp231_1 + tmp233_1 + tmp238_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp252_1 + tmp254_1 + tmp345_1 + tmp353_1 + tmp361_1 + tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1;
3342                                    EM_S[INDEX2(4,6,8)]+=tmp100_1 + tmp102_1 + tmp103_1 + tmp122_1 + tmp123_1 + tmp131_1 + tmp133_1 + tmp136_1 + tmp142_1 + tmp146_1 + tmp26_1 + tmp273_1 + tmp279_1 + tmp280_1 + tmp309_1 + tmp311_1 + tmp315_1 + tmp318_1 + tmp358_1 + tmp472_1 + tmp475_1 + tmp524_1 + tmp525_1 + tmp74_1 + tmp75_1 + tmp84_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1;
3343                                    EM_S[INDEX2(5,6,8)]+=tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1 + tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp31_1 + tmp34_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp41_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp49_1 + tmp50_1;
3344                                    EM_S[INDEX2(6,6,8)]+=tmp249_1 + tmp255_1 + tmp284_1 + tmp335_1 + tmp33_1 + tmp341_1 + tmp366_1 + tmp375_1 + tmp378_1 + tmp381_1 + tmp384_1 + tmp392_1 + tmp431_1 + tmp433_1 + tmp435_1 + tmp44_1 + tmp450_1 + tmp451_1 + tmp455_1 + tmp456_1 + tmp457_1 + tmp458_1 + tmp459_1 + tmp460_1;
3345                                    EM_S[INDEX2(7,6,8)]+=tmp101_1 + tmp125_1 + tmp134_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp221_1 + tmp224_1 + tmp270_1 + tmp271_1 + tmp274_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp281_1 + tmp310_1 + tmp322_1 + tmp323_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp67_1 + tmp82_1 + tmp87_1 + tmp90_1 + tmp97_1 + tmp98_1;
3346                                    EM_S[INDEX2(0,7,8)]+=tmp132_1 + tmp152_1 + tmp153_1 + tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp74_1;
3347                                  EM_S[INDEX2(1,7,8)]+=tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp228_1 + tmp239_1 + tmp245_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp297_1 + tmp299_1 + tmp403_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp410_1 + tmp489_1 + tmp534_1 + tmp535_1;                                  EM_S[INDEX2(1,7,8)]+=tmp165_1 + tmp166_1 + tmp169_1 + tmp171_1 + tmp228_1 + tmp239_1 + tmp245_1 + tmp248_1 + tmp250_1 + tmp251_1 + tmp297_1 + tmp299_1 + tmp403_1 + tmp404_1 + tmp405_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp410_1 + tmp489_1 + tmp534_1 + tmp535_1;
3348                                  EM_S[INDEX2(0,5,8)]+=tmp118_1 + tmp120_1 + tmp242_1 + tmp248_1 + tmp250_1 + tmp253_1 + tmp334_1 + tmp339_1 + tmp35_1 + tmp37_1 + tmp39_1 + tmp403_1 + tmp410_1 + tmp414_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp421_1 + tmp422_1 + tmp50_1 + tmp536_1 + tmp537_1;                                  EM_S[INDEX2(2,7,8)]+=tmp229_1 + tmp231_1 + tmp233_1 + tmp238_1 + tmp241_1 + tmp242_1 + tmp246_1 + tmp247_1 + tmp249_1 + tmp252_1 + tmp255_1 + tmp343_1 + tmp346_1 + tmp347_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp363_1 + tmp364_1 + tmp438_1 + tmp439_1 + tmp440_1;
3349                                  EM_S[INDEX2(3,4,8)]+=tmp155_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp518_1 + tmp520_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp12_1 + tmp139_1 + tmp13_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp20_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp55_1 + tmp62_1 + tmp64_1 + tmp72_1 + tmp79_1 + tmp80_1 + tmp81_1;
3350                                  EM_S[INDEX2(2,4,8)]+=tmp114_1 + tmp119_1 + tmp240_1 + tmp248_1 + tmp250_1 + tmp254_1 + tmp32_1 + tmp407_1 + tmp411_1 + tmp416_1 + tmp421_1 + tmp42_1 + tmp450_1 + tmp451_1 + tmp47_1 + tmp484_1 + tmp485_1 + tmp487_1 + tmp490_1 + tmp51_1 + tmp538_1 + tmp539_1;                                  EM_S[INDEX2(4,7,8)]+=tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;
3351                                    EM_S[INDEX2(5,7,8)]+=tmp101_1 + tmp10_1 + tmp11_1 + tmp14_1 + tmp15_1 + tmp193_1 + tmp21_1 + tmp25_1 + tmp310_1 + tmp312_1 + tmp317_1 + tmp319_1 + tmp322_1 + tmp324_1 + tmp355_1 + tmp360_1 + tmp397_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1 + tmp402_1 + tmp66_1 + tmp77_1 + tmp82_1 + tmp84_1 + tmp87_1 + tmp95_1 + tmp97_1 + tmp9_1;
3352                                    EM_S[INDEX2(6,7,8)]+=tmp122_1 + tmp125_1 + tmp131_1 + tmp134_1 + tmp142_1 + tmp146_1 + tmp16_1 + tmp174_1 + tmp182_1 + tmp187_1 + tmp224_1 + tmp22_1 + tmp24_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1 + tmp280_1 + tmp281_1 + tmp28_1 + tmp6_1 + tmp7_1 + tmp8_1;
3353                                    EM_S[INDEX2(7,7,8)]+=tmp162_1 + tmp170_1 + tmp282_1 + tmp292_1 + tmp301_1 + tmp345_1 + tmp353_1 + tmp369_1 + tmp381_1 + tmp382_1 + tmp383_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1 + tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1;
3354                              } else { // constant data                              } else { // constant data
3355                                  const double A_00 = A_p[INDEX2(0,0,3)];                                  const double A_00 = A_p[INDEX2(0,0,3)];
3356                                  const double A_01 = A_p[INDEX2(0,1,3)];                                  const double A_01 = A_p[INDEX2(0,1,3)];
# Line 3383  void Brick::assemblePDESingle(Paso_Syste Line 3418  void Brick::assemblePDESingle(Paso_Syste
3418                                  const double tmp20_1 = A_12*w66;                                  const double tmp20_1 = A_12*w66;
3419                                  const double tmp1_1 = A_12*w64;                                  const double tmp1_1 = A_12*w64;
3420                                  const double tmp24_1 = A_20*w62;                                  const double tmp24_1 = A_20*w62;
3421                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(0,0,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;
3422                                  EM_S[INDEX2(4,7,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(1,0,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;
3423                                  EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;                                  EM_S[INDEX2(2,0,8)]+=tmp0_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp22_1 + tmp36_1 + tmp5_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;  
3424                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp8_1 + tmp9_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp30_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp30_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp23_1 + tmp24_1 + tmp2_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;  
3425                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp23_1 + tmp24_1 + tmp2_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp23_1 + tmp24_1 + tmp2_1 + tmp6_1 + tmp7_1;
3426                                    EM_S[INDEX2(5,0,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_1;
3427                                    EM_S[INDEX2(6,0,8)]+=tmp33_1 + tmp34_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp45_1 + tmp53_1 + tmp8_1;
3428                                    EM_S[INDEX2(7,0,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;
3429                                    EM_S[INDEX2(0,1,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;
3430                                    EM_S[INDEX2(1,1,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;
3431                                    EM_S[INDEX2(2,1,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;
3432                                    EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;
3433                                    EM_S[INDEX2(4,1,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;
3434                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp30_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
3435                                    EM_S[INDEX2(6,1,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;
3436                                    EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;
3437                                    EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;
3438                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp15_1 + tmp35_1 + tmp38_1 + tmp39_1 + tmp8_1;                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp15_1 + tmp35_1 + tmp38_1 + tmp39_1 + tmp8_1;
3439                                  EM_S[INDEX2(6,7,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;                                  EM_S[INDEX2(2,2,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;
3440                                    EM_S[INDEX2(3,2,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp26_1 + tmp27_1 + tmp3_1 + tmp4_1 + tmp6_1;
3441                                    EM_S[INDEX2(4,2,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_1;
3442                                    EM_S[INDEX2(5,2,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;
3443                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_1 + tmp6_1 + tmp7_1;
3444                                    EM_S[INDEX2(7,2,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;
3445                                    EM_S[INDEX2(0,3,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;
3446                                    EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;
3447                                    EM_S[INDEX2(2,3,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;
3448                                  EM_S[INDEX2(3,3,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;                                  EM_S[INDEX2(3,3,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;
3449                                  EM_S[INDEX2(2,0,8)]+=tmp0_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp22_1 + tmp36_1 + tmp5_1;                                  EM_S[INDEX2(4,3,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;
3450                                  EM_S[INDEX2(7,6,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;                                  EM_S[INDEX2(5,3,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;  
3451                                  EM_S[INDEX2(6,3,8)]+=tmp11_1 + tmp14_1 + tmp42_1 + tmp44_1 + tmp49_1 + tmp50_1 + tmp51_1 + tmp9_1;                                  EM_S[INDEX2(6,3,8)]+=tmp11_1 + tmp14_1 + tmp42_1 + tmp44_1 + tmp49_1 + tmp50_1 + tmp51_1 + tmp9_1;
3452                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
3453                                    EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
3454                                    EM_S[INDEX2(1,4,8)]+=tmp11_1 + tmp14_1 + tmp42_1 + tmp44_1 + tmp49_1 + tmp50_1 + tmp51_1 + tmp9_1;
3455                                    EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;
3456                                    EM_S[INDEX2(3,4,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;
3457                                    EM_S[INDEX2(4,4,8)]+=tmp35_1 + tmp43_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1;
3458                                    EM_S[INDEX2(5,4,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;
3459                                    EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1;
3460                                    EM_S[INDEX2(7,4,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;
3461                                    EM_S[INDEX2(0,5,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;
3462                                  EM_S[INDEX2(1,5,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(1,5,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_1 + tmp6_1 + tmp7_1;
3463                                  EM_S[INDEX2(3,6,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;                                  EM_S[INDEX2(2,5,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;
3464                                  EM_S[INDEX2(2,2,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;                                  EM_S[INDEX2(3,5,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp22_1 + tmp36_1 + tmp5_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp26_1 + tmp27_1 + tmp3_1 + tmp4_1 + tmp6_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;  
3465                                  EM_S[INDEX2(4,5,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp26_1 + tmp27_1 + tmp3_1 + tmp4_1 + tmp6_1;                                  EM_S[INDEX2(4,5,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp26_1 + tmp27_1 + tmp3_1 + tmp4_1 + tmp6_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;  
3466                                  EM_S[INDEX2(5,5,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;                                  EM_S[INDEX2(5,5,8)]+=tmp13_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp11_1 + tmp14_1 + tmp42_1 + tmp44_1 + tmp49_1 + tmp50_1 + tmp51_1 + tmp9_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp33_1 + tmp34_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp45_1 + tmp53_1 + tmp8_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp21_1 + tmp23_1 + tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp6_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;  
3467                                  EM_S[INDEX2(6,5,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp15_1 + tmp35_1 + tmp38_1 + tmp39_1 + tmp8_1;                                  EM_S[INDEX2(6,5,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp15_1 + tmp35_1 + tmp38_1 + tmp39_1 + tmp8_1;
3468                                  EM_S[INDEX2(3,5,8)]+=tmp33_1 + tmp34_1 + tmp42_1 + tmp49_1 + tmp50_1 + tmp52_1 + tmp53_1 + tmp8_1;                                  EM_S[INDEX2(7,5,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp16_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp37_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp36_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp11_1 + tmp13_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp38_1 + tmp39_1 + tmp8_1;  
3469                                  EM_S[INDEX2(0,6,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;                                  EM_S[INDEX2(0,6,8)]+=tmp10_1 + tmp12_1 + tmp42_1 + tmp45_1 + tmp49_1 + tmp50_1 + tmp53_1 + tmp8_1;
3470                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp23_1 + tmp24_1 + tmp30_1 + tmp5_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(1,6,8)]+=tmp27_1 + tmp29_1 + tmp2_1 + tmp31_1 + tmp32_1 + tmp36_1;
3471                                  EM_S[INDEX2(4,3,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;                                  EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp30_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
3472                                    EM_S[INDEX2(3,6,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp44_1 + tmp51_1;
3473                                    EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp16_1 + tmp18_1 + tmp1_1 + tmp21_1 + tmp25_1 + tmp28_1 + tmp5_1;
3474                                    EM_S[INDEX2(5,6,8)]+=tmp11_1 + tmp14_1 + tmp15_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp8_1 + tmp9_1;
3475                                    EM_S[INDEX2(6,6,8)]+=tmp13_1 + tmp43_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp52_1;
3476                                    EM_S[INDEX2(7,6,8)]+=tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp24_1 + tmp26_1 + tmp37_1 + tmp6_1;
3477                                    EM_S[INDEX2(0,7,8)]+=tmp16_1 + tmp27_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1;
3478                                  EM_S[INDEX2(1,7,8)]+=tmp33_1 + tmp34_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp45_1 + tmp53_1 + tmp8_1;                                  EM_S[INDEX2(1,7,8)]+=tmp33_1 + tmp34_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp45_1 + tmp53_1 + tmp8_1;
3479                                  EM_S[INDEX2(0,5,8)]+=tmp11_1 + tmp14_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp9_1;                                  EM_S[INDEX2(2,7,8)]+=tmp11_1 + tmp38_1 + tmp39_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp49_1 + tmp50_1;
3480                                  EM_S[INDEX2(3,4,8)]+=tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp36_1 + tmp37_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp17_1 + tmp20_1 + tmp23_1 + tmp24_1 + tmp2_1 + tmp6_1 + tmp7_1;
3481                                  EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp52_1 + tmp53_1 + tmp8_1;                                  EM_S[INDEX2(4,7,8)]+=tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp8_1 + tmp9_1;
3482                                    EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp18_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp22_1 + tmp36_1 + tmp5_1;
3483                                    EM_S[INDEX2(6,7,8)]+=tmp21_1 + tmp25_1 + tmp26_1 + tmp28_1 + tmp37_1 + tmp3_1 + tmp4_1 + tmp6_1;
3484                                    EM_S[INDEX2(7,7,8)]+=tmp35_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1 + tmp52_1;
3485                              }                              }
3486                          }                          }
3487                          ///////////////                          ///////////////
# Line 3978  void Brick::assemblePDESingle(Paso_Syste Line 4013  void Brick::assemblePDESingle(Paso_Syste
4013                                  const double tmp240_1 = B_1_0*w99;                                  const double tmp240_1 = B_1_0*w99;
4014                                  const double tmp160_1 = B_0_1*w104;                                  const double tmp160_1 = B_0_1*w104;
4015                                  const double tmp377_1 = B_2_5*w100;                                  const double tmp377_1 = B_2_5*w100;
4016                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(0,0,8)]+=tmp175_1 + tmp178_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1;
4017                                  EM_S[INDEX2(4,7,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1;                                  EM_S[INDEX2(1,0,8)]+=tmp200_1 + tmp202_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1;
4018                                  EM_S[INDEX2(1,3,8)]+=tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1;                                  EM_S[INDEX2(2,0,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;  
4019                                  EM_S[INDEX2(3,0,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;                                  EM_S[INDEX2(3,0,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp100_1 + tmp101_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp10_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp11_1 + tmp120_1 + tmp121_1 + tmp12_1 + tmp1_1 + tmp4_1 + tmp7_1 + tmp8_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp122_1 + tmp123_1 + tmp76_1 + tmp77_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp55_1 + tmp58_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1;  
4020                                  EM_S[INDEX2(4,0,8)]+=tmp13_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1 + tmp152_1 + tmp153_1 + tmp6_1;                                  EM_S[INDEX2(4,0,8)]+=tmp13_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1 + tmp152_1 + tmp153_1 + tmp6_1;
4021                                    EM_S[INDEX2(5,0,8)]+=tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp298_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1;
4022                                    EM_S[INDEX2(6,0,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp397_1;
4023                                    EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;
4024                                    EM_S[INDEX2(0,1,8)]+=tmp154_1 + tmp155_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp416_1 + tmp417_1 + tmp419_1 + tmp421_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1;
4025                                    EM_S[INDEX2(1,1,8)]+=tmp211_1 + tmp212_1 + tmp244_1 + tmp246_1 + tmp252_1 + tmp254_1 + tmp300_1 + tmp301_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1;
4026                                    EM_S[INDEX2(2,1,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp54_1 + tmp55_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp61_1;
4027                                    EM_S[INDEX2(3,1,8)]+=tmp24_1 + tmp26_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp34_1 + tmp35_1 + tmp440_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp46_1 + tmp48_1;
4028                                    EM_S[INDEX2(4,1,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1;
4029                                    EM_S[INDEX2(5,1,8)]+=tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1;
4030                                    EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;
4031                                    EM_S[INDEX2(7,1,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp286_1 + tmp289_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1;
4032                                    EM_S[INDEX2(0,2,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp191_1 + tmp192_1 + tmp194_1 + tmp197_1 + tmp272_1 + tmp273_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp447_1;
4033                                  EM_S[INDEX2(1,2,8)]+=tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp52_1 + tmp53_1 + tmp55_1 + tmp56_1 + tmp58_1 + tmp60_1;                                  EM_S[INDEX2(1,2,8)]+=tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp52_1 + tmp53_1 + tmp55_1 + tmp56_1 + tmp58_1 + tmp60_1;
4034                                  EM_S[INDEX2(6,7,8)]+=tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1;                                  EM_S[INDEX2(2,2,8)]+=tmp206_1 + tmp207_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1;
4035                                    EM_S[INDEX2(3,2,8)]+=tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp322_1 + tmp323_1 + tmp62_1 + tmp64_1;
4036                                    EM_S[INDEX2(4,2,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp393_1 + tmp397_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1;
4037                                    EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp78_1 + tmp79_1;
4038                                    EM_S[INDEX2(6,2,8)]+=tmp109_1 + tmp112_1 + tmp452_1 + tmp453_1 + tmp454_1 + tmp455_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp91_1 + tmp94_1 + tmp95_1 + tmp97_1 + tmp99_1;
4039                                    EM_S[INDEX2(7,2,8)]+=tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1;
4040                                    EM_S[INDEX2(0,3,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp55_1 + tmp58_1;
4041                                    EM_S[INDEX2(1,3,8)]+=tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1;
4042                                    EM_S[INDEX2(2,3,8)]+=tmp313_1 + tmp314_1 + tmp315_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp323_1 + tmp362_1 + tmp363_1 + tmp402_1 + tmp403_1 + tmp404_1 + tmp405_1;
4043                                  EM_S[INDEX2(3,3,8)]+=tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1;                                  EM_S[INDEX2(3,3,8)]+=tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1;
4044                                  EM_S[INDEX2(2,0,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1;                                  EM_S[INDEX2(4,3,8)]+=tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1;
4045                                  EM_S[INDEX2(7,6,8)]+=tmp157_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp162_1 + tmp164_1 + tmp166_1 + tmp167_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1;                                  EM_S[INDEX2(5,3,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp222_1 + tmp223_1;  
4046                                  EM_S[INDEX2(6,3,8)]+=tmp134_1 + tmp135_1 + tmp136_1 + tmp138_1 + tmp140_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1;                                  EM_S[INDEX2(6,3,8)]+=tmp134_1 + tmp135_1 + tmp136_1 + tmp138_1 + tmp140_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1;
4047                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
4048                                    EM_S[INDEX2(0,4,8)]+=tmp119_1 + tmp120_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp146_1 + tmp147_1 + tmp149_1 + tmp151_1 + tmp152_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1;
4049                                    EM_S[INDEX2(1,4,8)]+=tmp294_1 + tmp295_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;
4050                                    EM_S[INDEX2(2,4,8)]+=tmp388_1 + tmp389_1 + tmp392_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;
4051                                    EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp80_1 + tmp81_1;
4052                                    EM_S[INDEX2(4,4,8)]+=tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp222_1 + tmp223_1;
4053                                    EM_S[INDEX2(5,4,8)]+=tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1;
4054                                    EM_S[INDEX2(6,4,8)]+=tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;
4055                                    EM_S[INDEX2(7,4,8)]+=tmp19_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;
4056                                    EM_S[INDEX2(0,5,8)]+=tmp290_1 + tmp291_1 + tmp294_1 + tmp295_1 + tmp297_1 + tmp299_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;
4057                                  EM_S[INDEX2(1,5,8)]+=tmp102_1 + tmp103_1 + tmp106_1 + tmp107_1 + tmp110_1 + tmp113_1 + tmp114_1 + tmp115_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp86_1 + tmp96_1;                                  EM_S[INDEX2(1,5,8)]+=tmp102_1 + tmp103_1 + tmp106_1 + tmp107_1 + tmp110_1 + tmp113_1 + tmp114_1 + tmp115_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp86_1 + tmp96_1;
4058                                  EM_S[INDEX2(3,6,8)]+=tmp132_1 + tmp133_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;                                  EM_S[INDEX2(2,5,8)]+=tmp122_1 + tmp123_1 + tmp76_1 + tmp77_1 + tmp80_1 + tmp81_1;
4059                                  EM_S[INDEX2(2,2,8)]+=tmp206_1 + tmp207_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1;                                  EM_S[INDEX2(3,5,8)]+=tmp280_1 + tmp281_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp215_1 + tmp222_1 + tmp247_1 + tmp250_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp264_1 + tmp265_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp211_1 + tmp212_1 + tmp244_1 + tmp246_1 + tmp252_1 + tmp254_1 + tmp300_1 + tmp301_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp138_1 + tmp140_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp322_1 + tmp323_1 + tmp62_1 + tmp64_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp175_1 + tmp178_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp179_1 + tmp184_1 + tmp325_1 + tmp326_1 + tmp340_1 + tmp341_1 + tmp342_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp298_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp286_1 + tmp289_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1;  
4060                                  EM_S[INDEX2(4,5,8)]+=tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1 + tmp366_1 + tmp367_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp71_1 + tmp72_1 + tmp75_1;                                  EM_S[INDEX2(4,5,8)]+=tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1 + tmp366_1 + tmp367_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp71_1 + tmp72_1 + tmp75_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp119_1 + tmp120_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp146_1 + tmp147_1 + tmp149_1 + tmp151_1 + tmp152_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1;  
4061                                  EM_S[INDEX2(5,5,8)]+=tmp168_1 + tmp170_1 + tmp330_1 + tmp335_1 + tmp345_1 + tmp352_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1 + tmp381_1 + tmp382_1 + tmp383_1;                                  EM_S[INDEX2(5,5,8)]+=tmp168_1 + tmp170_1 + tmp330_1 + tmp335_1 + tmp345_1 + tmp352_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1 + tmp381_1 + tmp382_1 + tmp383_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp294_1 + tmp295_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp397_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp195_1 + tmp198_1 + tmp266_1 + tmp268_1 + tmp269_1 + tmp271_1 + tmp274_1 + tmp275_1 + tmp278_1 + tmp279_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp313_1 + tmp314_1 + tmp315_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp323_1 + tmp362_1 + tmp363_1 + tmp402_1 + tmp403_1 + tmp404_1 + tmp405_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp54_1 + tmp55_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp61_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp393_1 + tmp397_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp200_1 + tmp202_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1;  
4062                                  EM_S[INDEX2(6,5,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp19_1 + tmp20_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1;                                  EM_S[INDEX2(6,5,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp19_1 + tmp20_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1;
4063                                  EM_S[INDEX2(3,5,8)]+=tmp280_1 + tmp281_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;                                  EM_S[INDEX2(7,5,8)]+=tmp195_1 + tmp198_1 + tmp266_1 + tmp268_1 + tmp269_1 + tmp271_1 + tmp274_1 + tmp275_1 + tmp278_1 + tmp279_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp154_1 + tmp155_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp416_1 + tmp417_1 + tmp419_1 + tmp421_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp27_1 + tmp28_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp436_1 + tmp437_1 + tmp438_1 + tmp439_1 + tmp43_1 + tmp44_1 + tmp50_1 + tmp51_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp78_1 + tmp79_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp24_1 + tmp26_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp34_1 + tmp35_1 + tmp440_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp46_1 + tmp48_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp191_1 + tmp192_1 + tmp194_1 + tmp197_1 + tmp272_1 + tmp273_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp447_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp19_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;  
4064                                  EM_S[INDEX2(0,6,8)]+=tmp388_1 + tmp389_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;                                  EM_S[INDEX2(0,6,8)]+=tmp388_1 + tmp389_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;
4065                                  EM_S[INDEX2(6,2,8)]+=tmp109_1 + tmp112_1 + tmp452_1 + tmp453_1 + tmp454_1 + tmp455_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp91_1 + tmp94_1 + tmp95_1 + tmp97_1 + tmp99_1;                                  EM_S[INDEX2(1,6,8)]+=tmp100_1 + tmp101_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4066                                  EM_S[INDEX2(4,3,8)]+=tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1;                                  EM_S[INDEX2(2,6,8)]+=tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;
4067                                    EM_S[INDEX2(3,6,8)]+=tmp132_1 + tmp133_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;
4068                                    EM_S[INDEX2(4,6,8)]+=tmp27_1 + tmp28_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp436_1 + tmp437_1 + tmp438_1 + tmp439_1 + tmp43_1 + tmp44_1 + tmp50_1 + tmp51_1;
4069                                    EM_S[INDEX2(5,6,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp22_1 + tmp23_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;
4070                                    EM_S[INDEX2(6,6,8)]+=tmp179_1 + tmp184_1 + tmp325_1 + tmp326_1 + tmp340_1 + tmp341_1 + tmp342_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1;
4071                                    EM_S[INDEX2(7,6,8)]+=tmp157_1 + tmp158_1 + tmp159_1 + tmp161_1 + tmp162_1 + tmp164_1 + tmp166_1 + tmp167_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1;
4072                                    EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4073                                  EM_S[INDEX2(1,7,8)]+=tmp280_1 + tmp281_1 + tmp284_1 + tmp285_1 + tmp287_1 + tmp288_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;                                  EM_S[INDEX2(1,7,8)]+=tmp280_1 + tmp281_1 + tmp284_1 + tmp285_1 + tmp287_1 + tmp288_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;
4074                                  EM_S[INDEX2(0,5,8)]+=tmp290_1 + tmp291_1 + tmp294_1 + tmp295_1 + tmp297_1 + tmp299_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;                                  EM_S[INDEX2(2,7,8)]+=tmp138_1 + tmp140_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;
4075                                  EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp80_1 + tmp81_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp10_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp11_1 + tmp120_1 + tmp121_1 + tmp12_1 + tmp1_1 + tmp4_1 + tmp7_1 + tmp8_1;
4076                                  EM_S[INDEX2(2,4,8)]+=tmp388_1 + tmp389_1 + tmp392_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;                                  EM_S[INDEX2(4,7,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1;
4077                                    EM_S[INDEX2(5,7,8)]+=tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1;
4078                                    EM_S[INDEX2(6,7,8)]+=tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1;
4079                                    EM_S[INDEX2(7,7,8)]+=tmp215_1 + tmp222_1 + tmp247_1 + tmp250_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp264_1 + tmp265_1;
4080                              } else { // constant data                              } else { // constant data
4081                                  const double B_0 = B_p[0];                                  const double B_0 = B_p[0];
4082                                  const double B_1 = B_p[1];                                  const double B_1 = B_p[1];
# Line 4064  void Brick::assemblePDESingle(Paso_Syste Line 4099  void Brick::assemblePDESingle(Paso_Syste
4099                                  const double tmp0_1 = B_2*w128;                                  const double tmp0_1 = B_2*w128;
4100                                  const double tmp16_1 = B_1*w142;                                  const double tmp16_1 = B_1*w142;
4101                                  const double tmp11_1 = B_0*w137;                                  const double tmp11_1 = B_0*w137;
4102                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(0,0,8)]+=tmp14_1 + tmp17_1 + tmp6_1;
4103                                  EM_S[INDEX2(4,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                                  EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp7_1;
4104                                  EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(2,0,8)]+=tmp3_1 + tmp7_1 + tmp9_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp8_1 + tmp9_1;  
4105                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp1_1 + tmp2_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp4_1 + tmp8_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp12_1 + tmp13_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp2_1 + tmp4_1 + tmp5_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp3_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp10_1 + tmp13_1 + tmp15_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp4_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp10_1 + tmp12_1 + tmp16_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp3_1 + tmp4_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp16_1 + tmp2_1 + tmp8_1;  
4106                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp3_1 + tmp4_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp3_1 + tmp4_1;
4107                                    EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp2_1 + tmp8_1;
4108                                    EM_S[INDEX2(6,0,8)]+=tmp12_1 + tmp1_1 + tmp8_1;
4109                                    EM_S[INDEX2(7,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;
4110                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp7_1;
4111                                    EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp14_1 + tmp6_1;
4112                                    EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp1_1 + tmp3_1;
4113                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp7_1 + tmp9_1;
4114                                    EM_S[INDEX2(4,1,8)]+=tmp13_1 + tmp3_1 + tmp8_1;
4115                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp4_1;
4116                                    EM_S[INDEX2(6,1,8)]+=tmp12_1 + tmp16_1 + tmp5_1;
4117                                    EM_S[INDEX2(7,1,8)]+=tmp15_1 + tmp1_1 + tmp8_1;
4118                                    EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp6_1 + tmp7_1;
4119                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp2_1 + tmp4_1;
4120                                  EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp8_1;                                  EM_S[INDEX2(2,2,8)]+=tmp14_1 + tmp17_1 + tmp9_1;
4121                                    EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp7_1;
4122                                    EM_S[INDEX2(4,2,8)]+=tmp12_1 + tmp4_1 + tmp8_1;
4123                                    EM_S[INDEX2(5,2,8)]+=tmp13_1 + tmp15_1 + tmp5_1;
4124                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp3_1;
4125                                    EM_S[INDEX2(7,2,8)]+=tmp16_1 + tmp2_1 + tmp8_1;
4126                                    EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp3_1 + tmp4_1;
4127                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp6_1 + tmp7_1;
4128                                    EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp7_1;
4129                                  EM_S[INDEX2(3,3,8)]+=tmp11_1 + tmp14_1 + tmp9_1;                                  EM_S[INDEX2(3,3,8)]+=tmp11_1 + tmp14_1 + tmp9_1;
4130                                  EM_S[INDEX2(2,0,8)]+=tmp3_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(4,3,8)]+=tmp12_1 + tmp13_1 + tmp5_1;
4131                                  EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp8_1;                                  EM_S[INDEX2(5,3,8)]+=tmp15_1 + tmp4_1 + tmp8_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp17_1 + tmp6_1;  
4132                                  EM_S[INDEX2(6,3,8)]+=tmp16_1 + tmp3_1 + tmp8_1;                                  EM_S[INDEX2(6,3,8)]+=tmp16_1 + tmp3_1 + tmp8_1;
4133                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
4134                                    EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp3_1 + tmp4_1;
4135                                    EM_S[INDEX2(1,4,8)]+=tmp13_1 + tmp2_1 + tmp7_1;
4136                                    EM_S[INDEX2(2,4,8)]+=tmp12_1 + tmp1_1 + tmp7_1;
4137                                    EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp15_1 + tmp16_1;
4138                                    EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp17_1 + tmp6_1;
4139                                    EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp4_1 + tmp8_1;
4140                                    EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp8_1 + tmp9_1;
4141                                    EM_S[INDEX2(7,4,8)]+=tmp1_1 + tmp2_1 + tmp5_1;
4142                                    EM_S[INDEX2(0,5,8)]+=tmp13_1 + tmp3_1 + tmp7_1;
4143                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp4_1;
4144                                  EM_S[INDEX2(3,6,8)]+=tmp16_1 + tmp2_1 + tmp7_1;                                  EM_S[INDEX2(2,5,8)]+=tmp10_1 + tmp12_1 + tmp16_1;
4145                                  EM_S[INDEX2(2,2,8)]+=tmp14_1 + tmp17_1 + tmp9_1;                                  EM_S[INDEX2(3,5,8)]+=tmp15_1 + tmp1_1 + tmp7_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp11_1 + tmp9_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp6_1 + tmp8_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp15_1 + tmp4_1 + tmp8_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp13_1 + tmp3_1 + tmp8_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp14_1 + tmp6_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp16_1 + tmp3_1 + tmp7_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp7_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp14_1 + tmp17_1 + tmp6_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp17_1 + tmp9_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp2_1 + tmp8_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp15_1 + tmp1_1 + tmp8_1;  
4146                                  EM_S[INDEX2(4,5,8)]+=tmp17_1 + tmp4_1 + tmp8_1;                                  EM_S[INDEX2(4,5,8)]+=tmp17_1 + tmp4_1 + tmp8_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp3_1 + tmp4_1;  
4147                                  EM_S[INDEX2(5,5,8)]+=tmp0_1 + tmp11_1 + tmp6_1;                                  EM_S[INDEX2(5,5,8)]+=tmp0_1 + tmp11_1 + tmp6_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp13_1 + tmp2_1 + tmp7_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp12_1 + tmp1_1 + tmp8_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp8_1 + tmp9_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp7_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp1_1 + tmp3_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp12_1 + tmp4_1 + tmp8_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp7_1;  
4148                                  EM_S[INDEX2(6,5,8)]+=tmp1_1 + tmp3_1 + tmp5_1;                                  EM_S[INDEX2(6,5,8)]+=tmp1_1 + tmp3_1 + tmp5_1;
4149                                  EM_S[INDEX2(3,5,8)]+=tmp15_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp8_1 + tmp9_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp7_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp3_1 + tmp6_1 + tmp8_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp13_1 + tmp15_1 + tmp5_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp12_1 + tmp16_1 + tmp5_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp7_1 + tmp9_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp1_1 + tmp2_1 + tmp5_1;  
4150                                  EM_S[INDEX2(0,6,8)]+=tmp12_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(0,6,8)]+=tmp12_1 + tmp4_1 + tmp7_1;
4151                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp3_1;                                  EM_S[INDEX2(1,6,8)]+=tmp10_1 + tmp13_1 + tmp15_1;
4152                                  EM_S[INDEX2(4,3,8)]+=tmp12_1 + tmp13_1 + tmp5_1;                                  EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp3_1;
4153                                    EM_S[INDEX2(3,6,8)]+=tmp16_1 + tmp2_1 + tmp7_1;
4154                                    EM_S[INDEX2(4,6,8)]+=tmp3_1 + tmp6_1 + tmp8_1;
4155                                    EM_S[INDEX2(5,6,8)]+=tmp2_1 + tmp4_1 + tmp5_1;
4156                                    EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp17_1 + tmp9_1;
4157                                    EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp8_1;
4158                                    EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp12_1 + tmp13_1;
4159                                  EM_S[INDEX2(1,7,8)]+=tmp15_1 + tmp4_1 + tmp7_1;                                  EM_S[INDEX2(1,7,8)]+=tmp15_1 + tmp4_1 + tmp7_1;
4160                                  EM_S[INDEX2(0,5,8)]+=tmp13_1 + tmp3_1 + tmp7_1;                                  EM_S[INDEX2(2,7,8)]+=tmp16_1 + tmp3_1 + tmp7_1;
4161                                  EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp15_1 + tmp16_1;                                  EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;
4162                                  EM_S[INDEX2(2,4,8)]+=tmp12_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(4,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
4163                                    EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp6_1 + tmp8_1;
4164                                    EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp8_1;
4165                                    EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp11_1 + tmp9_1;
4166                              }                              }
4167                          }                          }
4168                          ///////////////                          ///////////////
# Line 4659  void Brick::assemblePDESingle(Paso_Syste Line 4694  void Brick::assemblePDESingle(Paso_Syste
4694                                  const double tmp410_1 = C_0_7*w104;                                  const double tmp410_1 = C_0_7*w104;
4695                                  const double tmp268_1 = tmp21_0*w103;                                  const double tmp268_1 = tmp21_0*w103;
4696                                  const double tmp305_1 = C_2_1*w123;                                  const double tmp305_1 = C_2_1*w123;
4697                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                                  EM_S[INDEX2(0,0,8)]+=tmp175_1 + tmp178_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1;
4698                                  EM_S[INDEX2(4,7,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1;                                  EM_S[INDEX2(1,0,8)]+=tmp200_1 + tmp201_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1;
4699                                  EM_S[INDEX2(1,3,8)]+=tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1;                                  EM_S[INDEX2(2,0,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;  
4700                                  EM_S[INDEX2(3,0,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;                                  EM_S[INDEX2(3,0,8)]+=tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp16_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp22_1 + tmp23_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp100_1 + tmp101_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp10_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp120_1 + tmp121_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp3_1 + tmp7_1 + tmp8_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp122_1 + tmp123_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp81_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp58_1 + tmp59_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1;  
4701                                  EM_S[INDEX2(4,0,8)]+=tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1 + tmp152_1 + tmp153_1 + tmp6_1 + tmp9_1;                                  EM_S[INDEX2(4,0,8)]+=tmp142_1 + tmp143_1 + tmp144_1 + tmp145_1 + tmp146_1 + tmp147_1 + tmp148_1 + tmp149_1 + tmp150_1 + tmp151_1 + tmp152_1 + tmp153_1 + tmp6_1 + tmp9_1;
4702                                    EM_S[INDEX2(5,0,8)]+=tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp297_1 + tmp298_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1;
4703                                    EM_S[INDEX2(6,0,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp397_1;
4704                                    EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;
4705                                    EM_S[INDEX2(0,1,8)]+=tmp154_1 + tmp156_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp418_1 + tmp419_1 + tmp421_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1;
4706                                    EM_S[INDEX2(1,1,8)]+=tmp211_1 + tmp212_1 + tmp244_1 + tmp246_1 + tmp252_1 + tmp254_1 + tmp300_1 + tmp301_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1;
4707                                    EM_S[INDEX2(2,1,8)]+=tmp124_1 + tmp125_1 + tmp127_1 + tmp130_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;
4708                                    EM_S[INDEX2(3,1,8)]+=tmp24_1 + tmp25_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp31_1 + tmp34_1 + tmp35_1 + tmp43_1 + tmp440_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp44_1;
4709                                    EM_S[INDEX2(4,1,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1;
4710                                    EM_S[INDEX2(5,1,8)]+=tmp102_1 + tmp103_1 + tmp104_1 + tmp105_1 + tmp106_1 + tmp107_1 + tmp108_1 + tmp109_1 + tmp110_1 + tmp111_1 + tmp112_1 + tmp113_1 + tmp114_1 + tmp115_1;
4711                                    EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;
4712                                    EM_S[INDEX2(7,1,8)]+=tmp280_1 + tmp281_1 + tmp283_1 + tmp284_1 + tmp286_1 + tmp288_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1;
4713                                    EM_S[INDEX2(0,2,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp192_1 + tmp194_1 + tmp195_1 + tmp197_1 + tmp274_1 + tmp277_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp447_1;
4714                                  EM_S[INDEX2(1,2,8)]+=tmp126_1 + tmp128_1 + tmp129_1 + tmp131_1 + tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp58_1 + tmp59_1;                                  EM_S[INDEX2(1,2,8)]+=tmp126_1 + tmp128_1 + tmp129_1 + tmp131_1 + tmp52_1 + tmp53_1 + tmp54_1 + tmp55_1 + tmp58_1 + tmp59_1;
4715                                  EM_S[INDEX2(6,7,8)]+=tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1;                                  EM_S[INDEX2(2,2,8)]+=tmp206_1 + tmp207_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1;
4716                                    EM_S[INDEX2(3,2,8)]+=tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp322_1 + tmp323_1 + tmp62_1 + tmp63_1;
4717                                    EM_S[INDEX2(4,2,8)]+=tmp388_1 + tmp389_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1;
4718                                    EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp79_1 + tmp80_1;
4719                                    EM_S[INDEX2(6,2,8)]+=tmp109_1 + tmp111_1 + tmp452_1 + tmp453_1 + tmp454_1 + tmp455_1 + tmp86_1 + tmp87_1 + tmp88_1 + tmp90_1 + tmp93_1 + tmp94_1 + tmp96_1 + tmp97_1;
4720                                    EM_S[INDEX2(7,2,8)]+=tmp132_1 + tmp133_1 + tmp134_1 + tmp135_1 + tmp136_1 + tmp137_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1;
4721                                    EM_S[INDEX2(0,3,8)]+=tmp124_1 + tmp125_1 + tmp126_1 + tmp127_1 + tmp128_1 + tmp129_1 + tmp130_1 + tmp131_1 + tmp58_1 + tmp59_1;
4722                                    EM_S[INDEX2(1,3,8)]+=tmp24_1 + tmp25_1 + tmp26_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp30_1 + tmp31_1 + tmp32_1 + tmp33_1 + tmp34_1 + tmp35_1 + tmp36_1 + tmp37_1;
4723                                    EM_S[INDEX2(2,3,8)]+=tmp312_1 + tmp314_1 + tmp315_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp321_1 + tmp322_1 + tmp362_1 + tmp364_1 + tmp402_1 + tmp403_1 + tmp404_1 + tmp405_1;
4724                                  EM_S[INDEX2(3,3,8)]+=tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1;                                  EM_S[INDEX2(3,3,8)]+=tmp168_1 + tmp169_1 + tmp170_1 + tmp171_1 + tmp172_1 + tmp173_1 + tmp174_1 + tmp175_1 + tmp176_1 + tmp177_1 + tmp178_1 + tmp179_1 + tmp180_1 + tmp181_1 + tmp182_1 + tmp183_1 + tmp184_1 + tmp185_1;
4725                                  EM_S[INDEX2(2,0,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp190_1 + tmp191_1 + tmp192_1 + tmp193_1 + tmp194_1 + tmp195_1 + tmp196_1 + tmp197_1 + tmp198_1 + tmp199_1;                                  EM_S[INDEX2(4,3,8)]+=tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1 + tmp79_1 + tmp80_1;
4726                                  EM_S[INDEX2(7,6,8)]+=tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp162_1 + tmp163_1 + tmp166_1 + tmp167_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1;                                  EM_S[INDEX2(5,3,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp222_1 + tmp223_1;  
4727                                  EM_S[INDEX2(6,3,8)]+=tmp132_1 + tmp136_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1;                                  EM_S[INDEX2(6,3,8)]+=tmp132_1 + tmp136_1 + tmp138_1 + tmp139_1 + tmp140_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1;
4728                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp10_1 + tmp11_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
4729                                    EM_S[INDEX2(0,4,8)]+=tmp119_1 + tmp121_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp146_1 + tmp147_1 + tmp150_1 + tmp151_1 + tmp153_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1;
4730                                    EM_S[INDEX2(1,4,8)]+=tmp292_1 + tmp293_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;
4731                                    EM_S[INDEX2(2,4,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp396_1 + tmp397_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;
4732                                    EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp78_1 + tmp81_1;
4733                                    EM_S[INDEX2(4,4,8)]+=tmp206_1 + tmp207_1 + tmp208_1 + tmp209_1 + tmp210_1 + tmp211_1 + tmp212_1 + tmp213_1 + tmp214_1 + tmp215_1 + tmp216_1 + tmp217_1 + tmp218_1 + tmp219_1 + tmp220_1 + tmp221_1 + tmp222_1 + tmp223_1;
4734                                    EM_S[INDEX2(5,4,8)]+=tmp62_1 + tmp63_1 + tmp64_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp69_1 + tmp70_1 + tmp71_1 + tmp72_1 + tmp73_1 + tmp74_1 + tmp75_1;
4735                                    EM_S[INDEX2(6,4,8)]+=tmp38_1 + tmp39_1 + tmp40_1 + tmp41_1 + tmp42_1 + tmp43_1 + tmp44_1 + tmp45_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp49_1 + tmp50_1 + tmp51_1;
4736                                    EM_S[INDEX2(7,4,8)]+=tmp17_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;
4737                                    EM_S[INDEX2(0,5,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp296_1 + tmp299_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;
4738                                  EM_S[INDEX2(1,5,8)]+=tmp102_1 + tmp103_1 + tmp105_1 + tmp106_1 + tmp110_1 + tmp112_1 + tmp113_1 + tmp115_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp92_1 + tmp98_1;                                  EM_S[INDEX2(1,5,8)]+=tmp102_1 + tmp103_1 + tmp105_1 + tmp106_1 + tmp110_1 + tmp112_1 + tmp113_1 + tmp115_1 + tmp228_1 + tmp229_1 + tmp230_1 + tmp231_1 + tmp92_1 + tmp98_1;
4739                                  EM_S[INDEX2(3,6,8)]+=tmp133_1 + tmp134_1 + tmp135_1 + tmp137_1 + tmp139_1 + tmp141_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;                                  EM_S[INDEX2(2,5,8)]+=tmp122_1 + tmp123_1 + tmp76_1 + tmp77_1 + tmp78_1 + tmp81_1;
4740                                  EM_S[INDEX2(2,2,8)]+=tmp206_1 + tmp207_1 + tmp236_1 + tmp237_1 + tmp238_1 + tmp239_1 + tmp240_1 + tmp241_1 + tmp242_1 + tmp243_1 + tmp244_1 + tmp245_1 + tmp246_1 + tmp247_1 + tmp248_1 + tmp249_1 + tmp250_1 + tmp251_1;                                  EM_S[INDEX2(3,5,8)]+=tmp280_1 + tmp281_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp215_1 + tmp222_1 + tmp247_1 + tmp250_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp264_1 + tmp265_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp283_1 + tmp284_1 + tmp285_1 + tmp286_1 + tmp287_1 + tmp288_1 + tmp289_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp296_1 + tmp297_1 + tmp298_1 + tmp299_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp211_1 + tmp212_1 + tmp244_1 + tmp246_1 + tmp252_1 + tmp254_1 + tmp300_1 + tmp301_1 + tmp302_1 + tmp303_1 + tmp304_1 + tmp305_1 + tmp306_1 + tmp307_1 + tmp308_1 + tmp309_1 + tmp310_1 + tmp311_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp139_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp312_1 + tmp313_1 + tmp314_1 + tmp315_1 + tmp316_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp320_1 + tmp321_1 + tmp322_1 + tmp323_1 + tmp62_1 + tmp63_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp175_1 + tmp178_1 + tmp324_1 + tmp325_1 + tmp326_1 + tmp327_1 + tmp328_1 + tmp329_1 + tmp330_1 + tmp331_1 + tmp332_1 + tmp333_1 + tmp334_1 + tmp335_1 + tmp336_1 + tmp337_1 + tmp338_1 + tmp339_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp179_1 + tmp184_1 + tmp325_1 + tmp326_1 + tmp340_1 + tmp341_1 + tmp342_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp292_1 + tmp293_1 + tmp294_1 + tmp295_1 + tmp297_1 + tmp298_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp280_1 + tmp281_1 + tmp283_1 + tmp284_1 + tmp286_1 + tmp288_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1;  
4741                                  EM_S[INDEX2(4,5,8)]+=tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1 + tmp366_1 + tmp367_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp70_1 + tmp72_1 + tmp74_1 + tmp75_1;                                  EM_S[INDEX2(4,5,8)]+=tmp362_1 + tmp363_1 + tmp364_1 + tmp365_1 + tmp366_1 + tmp367_1 + tmp65_1 + tmp66_1 + tmp67_1 + tmp68_1 + tmp70_1 + tmp72_1 + tmp74_1 + tmp75_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp119_1 + tmp121_1 + tmp142_1 + tmp143_1 + tmp144_1 + tmp146_1 + tmp147_1 + tmp150_1 + tmp151_1 + tmp153_1 + tmp368_1 + tmp369_1 + tmp370_1 + tmp371_1;  
4742                                  EM_S[INDEX2(5,5,8)]+=tmp168_1 + tmp170_1 + tmp330_1 + tmp335_1 + tmp345_1 + tmp352_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1 + tmp381_1 + tmp382_1 + tmp383_1;                                  EM_S[INDEX2(5,5,8)]+=tmp168_1 + tmp170_1 + tmp330_1 + tmp335_1 + tmp345_1 + tmp352_1 + tmp372_1 + tmp373_1 + tmp374_1 + tmp375_1 + tmp376_1 + tmp377_1 + tmp378_1 + tmp379_1 + tmp380_1 + tmp381_1 + tmp382_1 + tmp383_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp292_1 + tmp293_1 + tmp354_1 + tmp355_1 + tmp356_1 + tmp357_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp396_1 + tmp397_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp190_1 + tmp191_1 + tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp271_1 + tmp272_1 + tmp276_1 + tmp279_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp312_1 + tmp314_1 + tmp315_1 + tmp317_1 + tmp318_1 + tmp319_1 + tmp321_1 + tmp322_1 + tmp362_1 + tmp364_1 + tmp402_1 + tmp403_1 + tmp404_1 + tmp405_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp124_1 + tmp125_1 + tmp127_1 + tmp130_1 + tmp56_1 + tmp57_1 + tmp58_1 + tmp59_1 + tmp60_1 + tmp61_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp388_1 + tmp389_1 + tmp392_1 + tmp393_1 + tmp394_1 + tmp395_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp200_1 + tmp201_1 + tmp410_1 + tmp411_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp417_1 + tmp418_1 + tmp419_1 + tmp420_1 + tmp421_1;  
4743                                  EM_S[INDEX2(6,5,8)]+=tmp14_1 + tmp15_1 + tmp17_1 + tmp18_1 + tmp21_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1;                                  EM_S[INDEX2(6,5,8)]+=tmp14_1 + tmp15_1 + tmp17_1 + tmp18_1 + tmp21_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1;
4744                                  EM_S[INDEX2(3,5,8)]+=tmp280_1 + tmp281_1 + tmp358_1 + tmp359_1 + tmp360_1 + tmp361_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;                                  EM_S[INDEX2(7,5,8)]+=tmp190_1 + tmp191_1 + tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp271_1 + tmp272_1 + tmp276_1 + tmp279_1 + tmp398_1 + tmp399_1 + tmp400_1 + tmp401_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp154_1 + tmp156_1 + tmp412_1 + tmp413_1 + tmp414_1 + tmp415_1 + tmp416_1 + tmp418_1 + tmp419_1 + tmp421_1 + tmp430_1 + tmp431_1 + tmp432_1 + tmp433_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp32_1 + tmp36_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp42_1 + tmp436_1 + tmp437_1 + tmp438_1 + tmp439_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp100_1 + tmp101_1 + tmp434_1 + tmp435_1 + tmp79_1 + tmp80_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp122_1 + tmp123_1 + tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp24_1 + tmp25_1 + tmp27_1 + tmp28_1 + tmp29_1 + tmp31_1 + tmp34_1 + tmp35_1 + tmp43_1 + tmp440_1 + tmp441_1 + tmp442_1 + tmp443_1 + tmp44_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp186_1 + tmp187_1 + tmp188_1 + tmp189_1 + tmp192_1 + tmp194_1 + tmp195_1 + tmp197_1 + tmp274_1 + tmp277_1 + tmp444_1 + tmp445_1 + tmp446_1 + tmp447_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp17_1 + tmp23_1 + tmp422_1 + tmp423_1 + tmp424_1 + tmp425_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;  
4745                                  EM_S[INDEX2(0,6,8)]+=tmp388_1 + tmp389_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;                                  EM_S[INDEX2(0,6,8)]+=tmp388_1 + tmp389_1 + tmp406_1 + tmp407_1 + tmp408_1 + tmp409_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;
4746                                  EM_S[INDEX2(6,2,8)]+=tmp109_1 + tmp111_1 + tmp452_1 + tmp453_1 + tmp454_1 + tmp455_1 + tmp86_1 + tmp87_1 + tmp88_1 + tmp90_1 + tmp93_1 + tmp94_1 + tmp96_1 + tmp97_1;                                  EM_S[INDEX2(1,6,8)]+=tmp100_1 + tmp101_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4747                                  EM_S[INDEX2(4,3,8)]+=tmp434_1 + tmp435_1 + tmp76_1 + tmp77_1 + tmp79_1 + tmp80_1;                                  EM_S[INDEX2(2,6,8)]+=tmp86_1 + tmp87_1 + tmp88_1 + tmp89_1 + tmp90_1 + tmp91_1 + tmp92_1 + tmp93_1 + tmp94_1 + tmp95_1 + tmp96_1 + tmp97_1 + tmp98_1 + tmp99_1;
4748                                    EM_S[INDEX2(3,6,8)]+=tmp133_1 + tmp134_1 + tmp135_1 + tmp137_1 + tmp139_1 + tmp141_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;
4749                                    EM_S[INDEX2(4,6,8)]+=tmp32_1 + tmp36_1 + tmp38_1 + tmp39_1 + tmp40_1 + tmp42_1 + tmp436_1 + tmp437_1 + tmp438_1 + tmp439_1 + tmp46_1 + tmp47_1 + tmp48_1 + tmp51_1;
4750                                    EM_S[INDEX2(5,6,8)]+=tmp16_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp22_1 + tmp23_1 + tmp82_1 + tmp83_1 + tmp84_1 + tmp85_1;
4751                                    EM_S[INDEX2(6,6,8)]+=tmp179_1 + tmp184_1 + tmp325_1 + tmp326_1 + tmp340_1 + tmp341_1 + tmp342_1 + tmp343_1 + tmp344_1 + tmp345_1 + tmp346_1 + tmp347_1 + tmp348_1 + tmp349_1 + tmp350_1 + tmp351_1 + tmp352_1 + tmp353_1;
4752                                    EM_S[INDEX2(7,6,8)]+=tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp162_1 + tmp163_1 + tmp166_1 + tmp167_1 + tmp200_1 + tmp201_1 + tmp202_1 + tmp203_1 + tmp204_1 + tmp205_1;
4753                                    EM_S[INDEX2(0,7,8)]+=tmp76_1 + tmp77_1 + tmp78_1 + tmp79_1 + tmp80_1 + tmp81_1;
4754                                  EM_S[INDEX2(1,7,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp285_1 + tmp287_1 + tmp289_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;                                  EM_S[INDEX2(1,7,8)]+=tmp280_1 + tmp281_1 + tmp282_1 + tmp285_1 + tmp287_1 + tmp289_1 + tmp426_1 + tmp427_1 + tmp428_1 + tmp429_1;
4755                                  EM_S[INDEX2(0,5,8)]+=tmp290_1 + tmp291_1 + tmp292_1 + tmp293_1 + tmp296_1 + tmp299_1 + tmp384_1 + tmp385_1 + tmp386_1 + tmp387_1;                                  EM_S[INDEX2(2,7,8)]+=tmp139_1 + tmp141_1 + tmp224_1 + tmp225_1 + tmp226_1 + tmp227_1 + tmp232_1 + tmp233_1 + tmp234_1 + tmp235_1;
4756                                  EM_S[INDEX2(3,4,8)]+=tmp100_1 + tmp101_1 + tmp122_1 + tmp123_1 + tmp78_1 + tmp81_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp10_1 + tmp116_1 + tmp117_1 + tmp118_1 + tmp119_1 + tmp120_1 + tmp121_1 + tmp12_1 + tmp13_1 + tmp1_1 + tmp3_1 + tmp7_1 + tmp8_1;
4757                                  EM_S[INDEX2(2,4,8)]+=tmp388_1 + tmp389_1 + tmp390_1 + tmp391_1 + tmp396_1 + tmp397_1 + tmp448_1 + tmp449_1 + tmp450_1 + tmp451_1;                                  EM_S[INDEX2(4,7,8)]+=tmp14_1 + tmp15_1 + tmp16_1 + tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp22_1 + tmp23_1;
4758                                    EM_S[INDEX2(5,7,8)]+=tmp266_1 + tmp267_1 + tmp268_1 + tmp269_1 + tmp270_1 + tmp271_1 + tmp272_1 + tmp273_1 + tmp274_1 + tmp275_1 + tmp276_1 + tmp277_1 + tmp278_1 + tmp279_1;
4759                                    EM_S[INDEX2(6,7,8)]+=tmp154_1 + tmp155_1 + tmp156_1 + tmp157_1 + tmp158_1 + tmp159_1 + tmp160_1 + tmp161_1 + tmp162_1 + tmp163_1 + tmp164_1 + tmp165_1 + tmp166_1 + tmp167_1;
4760                                    EM_S[INDEX2(7,7,8)]+=tmp215_1 + tmp222_1 + tmp247_1 + tmp250_1 + tmp252_1 + tmp253_1 + tmp254_1 + tmp255_1 + tmp256_1 + tmp257_1 + tmp258_1 + tmp259_1 + tmp260_1 + tmp261_1 + tmp262_1 + tmp263_1 + tmp264_1 + tmp265_1;
4761                              } else { // constant data                              } else { // constant data
4762                                  const double C_0 = C_p[0];                                  const double C_0 = C_p[0];
4763                                  const double C_1 = C_p[1];                                  const double C_1 = C_p[1];
# Line 4745  void Brick::assemblePDESingle(Paso_Syste Line 4780  void Brick::assemblePDESingle(Paso_Syste
4780                                  const double tmp6_1 = C_2*w135;                                  const double tmp6_1 = C_2*w135;
4781                                  const double tmp10_1 = C_2*w136;                                  const double tmp10_1 = C_2*w136;
4782                                  const double tmp9_1 = C_1*w130;                                  const double tmp9_1 = C_1*w130;
4783                                  EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                                  EM_S[INDEX2(0,0,8)]+=tmp0_1 + tmp11_1 + tmp8_1;
4784                                  EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;                                  EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp9_1;
4785                                  EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp4_1 + tmp5_1;                                  EM_S[INDEX2(2,0,8)]+=tmp4_1 + tmp7_1 + tmp8_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp6_1 + tmp7_1 + tmp8_1;  
4786                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp7_1 + tmp9_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp6_1 + tmp9_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp12_1 + tmp13_1 + tmp3_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp3_1 + tmp7_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp7_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp12_1 + tmp15_1 + tmp3_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp9_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp13_1 + tmp16_1 + tmp3_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp1_1 + tmp2_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp4_1 + tmp7_1;  
4787                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp7_1 + tmp9_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp7_1 + tmp9_1;
4788                                    EM_S[INDEX2(5,0,8)]+=tmp16_1 + tmp4_1 + tmp7_1;
4789                                    EM_S[INDEX2(6,0,8)]+=tmp15_1 + tmp4_1 + tmp9_1;
4790                                    EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp15_1 + tmp16_1;
4791                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp9_1;
4792                                    EM_S[INDEX2(1,1,8)]+=tmp0_1 + tmp17_1 + tmp8_1;
4793                                    EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp2_1 + tmp9_1;
4794                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp4_1 + tmp8_1;
4795                                    EM_S[INDEX2(4,1,8)]+=tmp16_1 + tmp2_1 + tmp4_1;
4796                                    EM_S[INDEX2(5,1,8)]+=tmp0_1 + tmp2_1 + tmp9_1;
4797                                    EM_S[INDEX2(6,1,8)]+=tmp10_1 + tmp13_1 + tmp16_1;
4798                                    EM_S[INDEX2(7,1,8)]+=tmp13_1 + tmp4_1 + tmp9_1;
4799                                    EM_S[INDEX2(0,2,8)]+=tmp4_1 + tmp5_1 + tmp7_1;
4800                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(1,2,8)]+=tmp10_1 + tmp1_1 + tmp7_1;
4801                                  EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp11_1 + tmp5_1;
4802                                    EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp4_1;
4803                                    EM_S[INDEX2(4,2,8)]+=tmp15_1 + tmp1_1 + tmp4_1;
4804                                    EM_S[INDEX2(5,2,8)]+=tmp10_1 + tmp12_1 + tmp15_1;
4805                                    EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp7_1;
4806                                    EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp4_1 + tmp7_1;
4807                                    EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp1_1 + tmp2_1;
4808                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp4_1 + tmp5_1;
4809                                    EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp4_1;
4810                                  EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp17_1 + tmp5_1;                                  EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp17_1 + tmp5_1;
4811                                  EM_S[INDEX2(2,0,8)]+=tmp4_1 + tmp7_1 + tmp8_1;                                  EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1;
4812                                  EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(5,3,8)]+=tmp13_1 + tmp1_1 + tmp4_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp11_1 + tmp14_1 + tmp8_1;  
4813                                  EM_S[INDEX2(6,3,8)]+=tmp12_1 + tmp2_1 + tmp4_1;                                  EM_S[INDEX2(6,3,8)]+=tmp12_1 + tmp2_1 + tmp4_1;
4814                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
4815                                    EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp7_1 + tmp9_1;
4816                                    EM_S[INDEX2(1,4,8)]+=tmp16_1 + tmp6_1 + tmp7_1;
4817                                    EM_S[INDEX2(2,4,8)]+=tmp15_1 + tmp6_1 + tmp9_1;
4818                                    EM_S[INDEX2(3,4,8)]+=tmp15_1 + tmp16_1 + tmp3_1;
4819                                    EM_S[INDEX2(4,4,8)]+=tmp11_1 + tmp14_1 + tmp8_1;
4820                                    EM_S[INDEX2(5,4,8)]+=tmp11_1 + tmp6_1 + tmp9_1;
4821                                    EM_S[INDEX2(6,4,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
4822                                    EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp7_1 + tmp9_1;
4823                                    EM_S[INDEX2(0,5,8)]+=tmp16_1 + tmp2_1 + tmp6_1;
4824                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp9_1;                                  EM_S[INDEX2(1,5,8)]+=tmp14_1 + tmp2_1 + tmp9_1;
4825                                  EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp6_1 + tmp7_1;                                  EM_S[INDEX2(2,5,8)]+=tmp13_1 + tmp16_1 + tmp3_1;
4826                                  EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp11_1 + tmp5_1;                                  EM_S[INDEX2(3,5,8)]+=tmp13_1 + tmp6_1 + tmp9_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp14_1 + tmp17_1 + tmp5_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp5_1 + tmp6_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp13_1 + tmp1_1 + tmp4_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp16_1 + tmp2_1 + tmp4_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp0_1 + tmp17_1 + tmp8_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp12_1 + tmp2_1 + tmp6_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp11_1 + tmp1_1 + tmp4_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp0_1 + tmp11_1 + tmp8_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp14_1 + tmp5_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp16_1 + tmp4_1 + tmp7_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp13_1 + tmp4_1 + tmp9_1;  
4827                                  EM_S[INDEX2(4,5,8)]+=tmp17_1 + tmp6_1 + tmp9_1;                                  EM_S[INDEX2(4,5,8)]+=tmp17_1 + tmp6_1 + tmp9_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp14_1 + tmp7_1 + tmp9_1;  
4828                                  EM_S[INDEX2(5,5,8)]+=tmp14_1 + tmp17_1 + tmp8_1;                                  EM_S[INDEX2(5,5,8)]+=tmp14_1 + tmp17_1 + tmp8_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp16_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp15_1 + tmp4_1 + tmp9_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp6_1 + tmp8_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp1_1 + tmp4_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp10_1 + tmp2_1 + tmp9_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp15_1 + tmp1_1 + tmp4_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp11_1 + tmp4_1 + tmp9_1;  
4829                                  EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp9_1;                                  EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp9_1;
4830                                  EM_S[INDEX2(3,5,8)]+=tmp13_1 + tmp6_1 + tmp9_1;                                  EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp6_1 + tmp8_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp4_1 + tmp9_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp15_1 + tmp16_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp5_1 + tmp6_1 + tmp7_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp10_1 + tmp12_1 + tmp15_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp10_1 + tmp13_1 + tmp16_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp4_1 + tmp8_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp4_1 + tmp5_1 + tmp7_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp7_1 + tmp9_1;  
4831                                  EM_S[INDEX2(0,6,8)]+=tmp15_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(0,6,8)]+=tmp15_1 + tmp1_1 + tmp6_1;
4832                                  EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp7_1;                                  EM_S[INDEX2(1,6,8)]+=tmp12_1 + tmp15_1 + tmp3_1;
4833                                  EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1;                                  EM_S[INDEX2(2,6,8)]+=tmp14_1 + tmp1_1 + tmp7_1;
4834                                    EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp6_1 + tmp7_1;
4835                                    EM_S[INDEX2(4,6,8)]+=tmp5_1 + tmp6_1 + tmp7_1;
4836                                    EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp3_1 + tmp7_1;
4837                                    EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp14_1 + tmp5_1;
4838                                    EM_S[INDEX2(7,6,8)]+=tmp11_1 + tmp1_1 + tmp6_1;
4839                                    EM_S[INDEX2(0,7,8)]+=tmp12_1 + tmp13_1 + tmp3_1;
4840                                  EM_S[INDEX2(1,7,8)]+=tmp13_1 + tmp1_1 + tmp6_1;                                  EM_S[INDEX2(1,7,8)]+=tmp13_1 + tmp1_1 + tmp6_1;
4841                                  EM_S[INDEX2(0,5,8)]+=tmp16_1 + tmp2_1 + tmp6_1;                                  EM_S[INDEX2(2,7,8)]+=tmp12_1 + tmp2_1 + tmp6_1;
4842                                  EM_S[INDEX2(3,4,8)]+=tmp15_1 + tmp16_1 + tmp3_1;                                  EM_S[INDEX2(3,7,8)]+=tmp14_1 + tmp1_1 + tmp2_1;
4843                                  EM_S[INDEX2(2,4,8)]+=tmp15_1 + tmp6_1 + tmp9_1;                                  EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
4844                                    EM_S[INDEX2(5,7,8)]+=tmp2_1 + tmp5_1 + tmp6_1;
4845                                    EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp1_1 + tmp6_1;
4846                                    EM_S[INDEX2(7,7,8)]+=tmp14_1 + tmp17_1 + tmp5_1;
4847                              }                              }
4848                          }                          }
4849                          ///////////////                          ///////////////
# Line 5004  void Brick::assemblePDESingle(Paso_Syste Line 5039  void Brick::assemblePDESingle(Paso_Syste
5039                                  const double tmp0_1 = D_0*w151;                                  const double tmp0_1 = D_0*w151;
5040                                  const double tmp2_1 = D_0*w153;                                  const double tmp2_1 = D_0*w153;
5041                                  const double tmp1_1 = D_0*w152;                                  const double tmp1_1 = D_0*w152;
5042                                  EM_S[INDEX2(7,3,8)]+=tmp0_1;                                  EM_S[INDEX2(0,0,8)]+=tmp3_1;
5043                                  EM_S[INDEX2(4,7,8)]+=tmp1_1;                                  EM_S[INDEX2(1,0,8)]+=tmp0_1;
5044                                  EM_S[INDEX2(1,3,8)]+=tmp0_1;                                  EM_S[INDEX2(2,0,8)]+=tmp0_1;
                                 EM_S[INDEX2(6,4,8)]+=tmp0_1;  
5045                                  EM_S[INDEX2(3,0,8)]+=tmp1_1;                                  EM_S[INDEX2(3,0,8)]+=tmp1_1;
                                 EM_S[INDEX2(5,4,8)]+=tmp0_1;  
                                 EM_S[INDEX2(0,7,8)]+=tmp2_1;  
                                 EM_S[INDEX2(5,6,8)]+=tmp1_1;  
                                 EM_S[INDEX2(2,6,8)]+=tmp0_1;  
                                 EM_S[INDEX2(1,6,8)]+=tmp2_1;  
                                 EM_S[INDEX2(5,1,8)]+=tmp0_1;  
                                 EM_S[INDEX2(3,7,8)]+=tmp0_1;  
                                 EM_S[INDEX2(2,5,8)]+=tmp2_1;  
                                 EM_S[INDEX2(0,3,8)]+=tmp1_1;  
                                 EM_S[INDEX2(7,2,8)]+=tmp1_1;  
5046                                  EM_S[INDEX2(4,0,8)]+=tmp0_1;                                  EM_S[INDEX2(4,0,8)]+=tmp0_1;
5047                                    EM_S[INDEX2(5,0,8)]+=tmp1_1;
5048                                    EM_S[INDEX2(6,0,8)]+=tmp1_1;
5049                                    EM_S[INDEX2(7,0,8)]+=tmp2_1;
5050                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
5051                                    EM_S[INDEX2(1,1,8)]+=tmp3_1;
5052                                    EM_S[INDEX2(2,1,8)]+=tmp1_1;
5053                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
5054                                    EM_S[INDEX2(4,1,8)]+=tmp1_1;
5055                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
5056                                    EM_S[INDEX2(6,1,8)]+=tmp2_1;
5057                                    EM_S[INDEX2(7,1,8)]+=tmp1_1;
5058                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
5059                                  EM_S[INDEX2(1,2,8)]+=tmp1_1;                                  EM_S[INDEX2(1,2,8)]+=tmp1_1;
5060                                  EM_S[INDEX2(6,7,8)]+=tmp0_1;                                  EM_S[INDEX2(2,2,8)]+=tmp3_1;
5061                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
5062                                    EM_S[INDEX2(4,2,8)]+=tmp1_1;
5063                                    EM_S[INDEX2(5,2,8)]+=tmp2_1;
5064                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
5065                                    EM_S[INDEX2(7,2,8)]+=tmp1_1;
5066                                    EM_S[INDEX2(0,3,8)]+=tmp1_1;
5067                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
5068                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
5069                                  EM_S[INDEX2(3,3,8)]+=tmp3_1;                                  EM_S[INDEX2(3,3,8)]+=tmp3_1;
5070                                  EM_S[INDEX2(2,0,8)]+=tmp0_1;                                  EM_S[INDEX2(4,3,8)]+=tmp2_1;
5071                                  EM_S[INDEX2(7,6,8)]+=tmp0_1;                                  EM_S[INDEX2(5,3,8)]+=tmp1_1;
                                 EM_S[INDEX2(4,4,8)]+=tmp3_1;  
5072                                  EM_S[INDEX2(6,3,8)]+=tmp1_1;                                  EM_S[INDEX2(6,3,8)]+=tmp1_1;
5073                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
5074                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
5075                                    EM_S[INDEX2(1,4,8)]+=tmp1_1;
5076                                    EM_S[INDEX2(2,4,8)]+=tmp1_1;
5077                                    EM_S[INDEX2(3,4,8)]+=tmp2_1;
5078                                    EM_S[INDEX2(4,4,8)]+=tmp3_1;
5079                                    EM_S[INDEX2(5,4,8)]+=tmp0_1;
5080                                    EM_S[INDEX2(6,4,8)]+=tmp0_1;
5081                                    EM_S[INDEX2(7,4,8)]+=tmp1_1;
5082                                    EM_S[INDEX2(0,5,8)]+=tmp1_1;
5083                                  EM_S[INDEX2(1,5,8)]+=tmp0_1;                                  EM_S[INDEX2(1,5,8)]+=tmp0_1;
5084                                  EM_S[INDEX2(3,6,8)]+=tmp1_1;                                  EM_S[INDEX2(2,5,8)]+=tmp2_1;
5085                                  EM_S[INDEX2(2,2,8)]+=tmp3_1;                                  EM_S[INDEX2(3,5,8)]+=tmp1_1;
                                 EM_S[INDEX2(7,7,8)]+=tmp3_1;  
                                 EM_S[INDEX2(5,7,8)]+=tmp0_1;  
                                 EM_S[INDEX2(5,3,8)]+=tmp1_1;  
                                 EM_S[INDEX2(4,1,8)]+=tmp1_1;  
                                 EM_S[INDEX2(1,1,8)]+=tmp3_1;  
                                 EM_S[INDEX2(2,7,8)]+=tmp1_1;  
                                 EM_S[INDEX2(3,2,8)]+=tmp0_1;  
                                 EM_S[INDEX2(0,0,8)]+=tmp3_1;  
                                 EM_S[INDEX2(6,6,8)]+=tmp3_1;  
                                 EM_S[INDEX2(5,0,8)]+=tmp1_1;  
                                 EM_S[INDEX2(7,1,8)]+=tmp1_1;  
5086                                  EM_S[INDEX2(4,5,8)]+=tmp0_1;                                  EM_S[INDEX2(4,5,8)]+=tmp0_1;
                                 EM_S[INDEX2(0,4,8)]+=tmp0_1;  
5087                                  EM_S[INDEX2(5,5,8)]+=tmp3_1;                                  EM_S[INDEX2(5,5,8)]+=tmp3_1;
                                 EM_S[INDEX2(1,4,8)]+=tmp1_1;  
                                 EM_S[INDEX2(6,0,8)]+=tmp1_1;  
                                 EM_S[INDEX2(7,5,8)]+=tmp0_1;  
                                 EM_S[INDEX2(2,3,8)]+=tmp0_1;  
                                 EM_S[INDEX2(2,1,8)]+=tmp1_1;  
                                 EM_S[INDEX2(4,2,8)]+=tmp1_1;  
                                 EM_S[INDEX2(1,0,8)]+=tmp0_1;  
5088                                  EM_S[INDEX2(6,5,8)]+=tmp1_1;                                  EM_S[INDEX2(6,5,8)]+=tmp1_1;
5089                                  EM_S[INDEX2(3,5,8)]+=tmp1_1;                                  EM_S[INDEX2(7,5,8)]+=tmp0_1;
                                 EM_S[INDEX2(0,1,8)]+=tmp0_1;  
                                 EM_S[INDEX2(7,0,8)]+=tmp2_1;  
                                 EM_S[INDEX2(4,6,8)]+=tmp0_1;  
                                 EM_S[INDEX2(5,2,8)]+=tmp2_1;  
                                 EM_S[INDEX2(6,1,8)]+=tmp2_1;  
                                 EM_S[INDEX2(3,1,8)]+=tmp0_1;  
                                 EM_S[INDEX2(0,2,8)]+=tmp0_1;  
                                 EM_S[INDEX2(7,4,8)]+=tmp1_1;  
5090                                  EM_S[INDEX2(0,6,8)]+=tmp1_1;                                  EM_S[INDEX2(0,6,8)]+=tmp1_1;
5091                                  EM_S[INDEX2(6,2,8)]+=tmp0_1;                                  EM_S[INDEX2(1,6,8)]+=tmp2_1;
5092                                  EM_S[INDEX2(4,3,8)]+=tmp2_1;                                  EM_S[INDEX2(2,6,8)]+=tmp0_1;
5093                                    EM_S[INDEX2(3,6,8)]+=tmp1_1;
5094                                    EM_S[INDEX2(4,6,8)]+=tmp0_1;
5095                                    EM_S[INDEX2(5,6,8)]+=tmp1_1;
5096                                    EM_S[INDEX2(6,6,8)]+=tmp3_1;
5097                                    EM_S[INDEX2(7,6,8)]+=tmp0_1;
5098                                    EM_S[INDEX2(0,7,8)]+=tmp2_1;
5099                                  EM_S[INDEX2(1,7,8)]+=tmp1_1;                                  EM_S[INDEX2(1,7,8)]+=tmp1_1;
5100                                  EM_S[INDEX2(0,5,8)]+=tmp1_1;                                  EM_S[INDEX2(2,7,8)]+=tmp1_1;
5101                                  EM_S[INDEX2(3,4,8)]+=tmp2_1;                                  EM_S[INDEX2(3,7,8)]+=tmp0_1;
5102                                  EM_S[INDEX2(2,4,8)]+=tmp1_1;                                  EM_S[INDEX2(4,7,8)]+=tmp1_1;
5103                                    EM_S[INDEX2(5,7,8)]+=tmp0_1;
5104                                    EM_S[INDEX2(6,7,8)]+=tmp0_1;
5105                                    EM_S[INDEX2(7,7,8)]+=tmp3_1;
5106                              }                              }
5107                          }                          }
5108                          ///////////////                          ///////////////
# Line 5286  void Brick::assemblePDESingle(Paso_Syste Line 5321  void Brick::assemblePDESingle(Paso_Syste
5321    
5322                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)
5323                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;
5324                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
5325                          rowIndex.push_back(m_dofMap[firstNode]);                                  add_EM_F, firstNode);
                         rowIndex.push_back(m_dofMap[firstNode+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);  
                         if (add_EM_F) {  
                             double *F_p=rhs.getSampleDataRW(0);  
                             for (index_t i=0; i<rowIndex.size(); i++) {  
                                 if (rowIndex[i]<getNumDOF()) {  
                                     F_p[rowIndex[i]]+=EM_F[i];  
                                 }  
                             }  
                         }  
                         if (add_EM_S) {  
                             addToSystemMatrix(mat, rowIndex, 1, rowIndex, 1, EM_S);  
                         }  
5326                      } // end k0 loop                      } // end k0 loop
5327                  } // end k1 loop                  } // end k1 loop
5328              } // end k2 loop              } // end k2 loop
# Line 5369  void Brick::assemblePDESingleReduced(Pas Line 5386  void Brick::assemblePDESingleReduced(Pas
5386                              add_EM_S=true;                              add_EM_S=true;
5387                              const double* A_p=const_cast<escript::Data*>(&A)->getSampleDataRO(e);                              const double* A_p=const_cast<escript::Data*>(&A)->getSampleDataRO(e);
5388                              const double A_00 = A_p[INDEX2(0,0,3)];                              const double A_00 = A_p[INDEX2(0,0,3)];
                             const double A_01 = A_p[INDEX2(0,1,3)];  
                             const double A_02 = A_p[INDEX2(0,2,3)];  
5389                              const double A_10 = A_p[INDEX2(1,0,3)];                              const double A_10 = A_p[INDEX2(1,0,3)];
                             const double A_11 = A_p[INDEX2(1,1,3)];  
                             const double A_12 = A_p[INDEX2(1,2,3)];  
5390                              const double A_20 = A_p[INDEX2(2,0,3)];                              const double A_20 = A_p[INDEX2(2,0,3)];
5391                                const double A_01 = A_p[INDEX2(0,1,3)];
5392                                const double A_11 = A_p[INDEX2(1,1,3)];
5393                              const double A_21 = A_p[INDEX2(2,1,3)];                              const double A_21 = A_p[INDEX2(2,1,3)];
5394                                const double A_02 = A_p[INDEX2(0,2,3)];
5395                                const double A_12 = A_p[INDEX2(1,2,3)];
5396                              const double A_22 = A_p[INDEX2(2,2,3)];                              const double A_22 = A_p[INDEX2(2,2,3)];
5397                              const double tmp0_0 = A_01 + A_10;                              const double tmp0_0 = A_01 + A_10;
5398                              const double tmp1_0 = A_02 + A_20;                              const double tmp1_0 = A_02 + A_20;
# Line 5404  void Brick::assemblePDESingleReduced(Pas Line 5421  void Brick::assemblePDESingleReduced(Pas
5421                              const double tmp16_1 = A_10*w9;                              const double tmp16_1 = A_10*w9;
5422                              const double tmp11_1 = tmp0_0*w9;                              const double tmp11_1 = tmp0_0*w9;
5423                              const double tmp17_1 = A_10*w1;                              const double tmp17_1 = A_10*w1;
5424                              EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;                              EM_S[INDEX2(0,0,8)]+=tmp0_1 + tmp22_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5425                              EM_S[INDEX2(4,7,8)]+=tmp10_1 + tmp11_1 + tmp1_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp20_1 + tmp23_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5426                              EM_S[INDEX2(1,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;                              EM_S[INDEX2(2,0,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp1_1 + tmp22_1 + tmp2_1 + tmp5_1 + tmp9_1;
                             EM_S[INDEX2(6,4,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;  
5427                              EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp11_1 + tmp1_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(3,0,8)]+=tmp10_1 + tmp11_1 + tmp1_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
                             EM_S[INDEX2(5,4,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(2,6,8)]+=tmp11_1 + tmp13_1 + tmp14_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;  
                             EM_S[INDEX2(1,6,8)]+=tmp0_1 + tmp10_1 + tmp18_1 + tmp22_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(5,1,8)]+=tmp11_1 + tmp13_1 + tmp14_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;  
                             EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(2,5,8)]+=tmp0_1 + tmp10_1 + tmp15_1 + tmp23_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;  
5428                              EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(4,0,8)]+=tmp0_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1;
5429                                EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp14_1 + tmp15_1 + tmp17_1 + tmp20_1 + tmp3_1 + tmp4_1 + tmp8_1;
5430                                EM_S[INDEX2(6,0,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1;
5431                                EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;
5432                                EM_S[INDEX2(0,1,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;
5433                                EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5434                                EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;
5435                                EM_S[INDEX2(3,1,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;
5436                                EM_S[INDEX2(4,1,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;
5437                                EM_S[INDEX2(5,1,8)]+=tmp11_1 + tmp13_1 + tmp14_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
5438                                EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp10_1 + tmp18_1 + tmp22_1 + tmp3_1 + tmp8_1;
5439                                EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
5440                                EM_S[INDEX2(0,2,8)]+=tmp10_1 + tmp13_1 + tmp14_1 + tmp17_1 + tmp20_1 + tmp22_1 + tmp2_1 + tmp9_1;
5441                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp10_1 + tmp13_1 + tmp14_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp10_1 + tmp13_1 + tmp14_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5442                              EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp20_1 + tmp23_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(2,2,8)]+=tmp11_1 + tmp18_1 + tmp22_1 + tmp2_1 + tmp4_1 + tmp9_1;
5443                                EM_S[INDEX2(3,2,8)]+=tmp12_1 + tmp16_1 + tmp18_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5444                                EM_S[INDEX2(4,2,8)]+=tmp10_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp23_1 + tmp2_1 + tmp3_1;
5445                                EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp10_1 + tmp15_1 + tmp23_1 + tmp3_1 + tmp8_1;
5446                                EM_S[INDEX2(6,2,8)]+=tmp11_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1;
5447                                EM_S[INDEX2(7,2,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5448                                EM_S[INDEX2(0,3,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;
5449                                EM_S[INDEX2(1,3,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;
5450                                EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;
5451                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp15_1 + tmp18_1 + tmp2_1 + tmp4_1 + tmp9_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp15_1 + tmp18_1 + tmp2_1 + tmp4_1 + tmp9_1;
5452                              EM_S[INDEX2(2,0,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp1_1 + tmp22_1 + tmp2_1 + tmp5_1 + tmp9_1;                              EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp11_1 + tmp22_1 + tmp23_1 + tmp3_1 + tmp8_1;
5453                              EM_S[INDEX2(7,6,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(5,3,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp23_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
                             EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp15_1 + tmp18_1 + tmp2_1 + tmp4_1 + tmp9_1;  
5454                              EM_S[INDEX2(6,3,8)]+=tmp17_1 + tmp1_1 + tmp20_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;                              EM_S[INDEX2(6,3,8)]+=tmp17_1 + tmp1_1 + tmp20_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5455                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
5456                                EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;
5457                                EM_S[INDEX2(1,4,8)]+=tmp17_1 + tmp1_1 + tmp20_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5458                                EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp23_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
5459                                EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp11_1 + tmp22_1 + tmp23_1 + tmp3_1 + tmp8_1;
5460                                EM_S[INDEX2(4,4,8)]+=tmp0_1 + tmp15_1 + tmp18_1 + tmp2_1 + tmp4_1 + tmp9_1;
5461                                EM_S[INDEX2(5,4,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;
5462                                EM_S[INDEX2(6,4,8)]+=tmp10_1 + tmp12_1 + tmp13_1 + tmp14_1 + tmp15_1 + tmp16_1 + tmp2_1 + tmp9_1;
5463                                EM_S[INDEX2(7,4,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;
5464                                EM_S[INDEX2(0,5,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;
5465                              EM_S[INDEX2(1,5,8)]+=tmp11_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(1,5,8)]+=tmp11_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1;
5466                              EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;                              EM_S[INDEX2(2,5,8)]+=tmp0_1 + tmp10_1 + tmp15_1 + tmp23_1 + tmp3_1 + tmp8_1;
5467                              EM_S[INDEX2(2,2,8)]+=tmp11_1 + tmp18_1 + tmp22_1 + tmp2_1 + tmp4_1 + tmp9_1;                              EM_S[INDEX2(3,5,8)]+=tmp10_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp23_1 + tmp2_1 + tmp3_1;
                             EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp22_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;  
                             EM_S[INDEX2(5,7,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp1_1 + tmp22_1 + tmp2_1 + tmp5_1 + tmp9_1;  
                             EM_S[INDEX2(5,3,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp23_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;  
                             EM_S[INDEX2(4,1,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;  
                             EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;  
                             EM_S[INDEX2(2,7,8)]+=tmp13_1 + tmp14_1 + tmp15_1 + tmp17_1 + tmp20_1 + tmp3_1 + tmp4_1 + tmp8_1;  
                             EM_S[INDEX2(3,2,8)]+=tmp12_1 + tmp16_1 + tmp18_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(0,0,8)]+=tmp0_1 + tmp22_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;  
                             EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;  
                             EM_S[INDEX2(5,0,8)]+=tmp13_1 + tmp14_1 + tmp15_1 + tmp17_1 + tmp20_1 + tmp3_1 + tmp4_1 + tmp8_1;  
                             EM_S[INDEX2(7,1,8)]+=tmp10_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;  
5468                              EM_S[INDEX2(4,5,8)]+=tmp12_1 + tmp16_1 + tmp18_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(4,5,8)]+=tmp12_1 + tmp16_1 + tmp18_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
                             EM_S[INDEX2(0,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp6_1 + tmp7_1;  
5469                              EM_S[INDEX2(5,5,8)]+=tmp11_1 + tmp18_1 + tmp22_1 + tmp2_1 + tmp4_1 + tmp9_1;                              EM_S[INDEX2(5,5,8)]+=tmp11_1 + tmp18_1 + tmp22_1 + tmp2_1 + tmp4_1 + tmp9_1;
                             EM_S[INDEX2(1,4,8)]+=tmp17_1 + tmp1_1 + tmp20_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;  
                             EM_S[INDEX2(6,0,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(7,5,8)]+=tmp10_1 + tmp13_1 + tmp14_1 + tmp17_1 + tmp20_1 + tmp22_1 + tmp2_1 + tmp9_1;  
                             EM_S[INDEX2(2,3,8)]+=tmp17_1 + tmp18_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp4_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(4,2,8)]+=tmp10_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp23_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp20_1 + tmp23_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;  
5470                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp10_1 + tmp13_1 + tmp14_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp10_1 + tmp13_1 + tmp14_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5471                              EM_S[INDEX2(3,5,8)]+=tmp10_1 + tmp17_1 + tmp19_1 + tmp20_1 + tmp21_1 + tmp23_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(7,5,8)]+=tmp10_1 + tmp13_1 + tmp14_1 + tmp17_1 + tmp20_1 + tmp22_1 + tmp2_1 + tmp9_1;
                             EM_S[INDEX2(0,1,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;  
                             EM_S[INDEX2(7,0,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(4,6,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;  
                             EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp10_1 + tmp15_1 + tmp23_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp10_1 + tmp18_1 + tmp22_1 + tmp3_1 + tmp8_1;  
                             EM_S[INDEX2(3,1,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;  
                             EM_S[INDEX2(0,2,8)]+=tmp10_1 + tmp13_1 + tmp14_1 + tmp17_1 + tmp20_1 + tmp22_1 + tmp2_1 + tmp9_1;  
                             EM_S[INDEX2(7,4,8)]+=tmp10_1 + tmp11_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp8_1 + tmp9_1;  
5472                              EM_S[INDEX2(0,6,8)]+=tmp10_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;                              EM_S[INDEX2(0,6,8)]+=tmp10_1 + tmp17_1 + tmp18_1 + tmp20_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;
5473                              EM_S[INDEX2(6,2,8)]+=tmp11_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(1,6,8)]+=tmp0_1 + tmp10_1 + tmp18_1 + tmp22_1 + tmp3_1 + tmp8_1;
5474                              EM_S[INDEX2(4,3,8)]+=tmp10_1 + tmp11_1 + tmp22_1 + tmp23_1 + tmp3_1 + tmp8_1;                              EM_S[INDEX2(2,6,8)]+=tmp11_1 + tmp13_1 + tmp14_1 + tmp2_1 + tmp3_1 + tmp4_1 + tmp6_1 + tmp7_1;
5475                                EM_S[INDEX2(3,6,8)]+=tmp12_1 + tmp13_1 + tmp14_1 + tmp16_1 + tmp22_1 + tmp3_1 + tmp4_1 + tmp8_1;
5476                                EM_S[INDEX2(4,6,8)]+=tmp10_1 + tmp15_1 + tmp17_1 + tmp1_1 + tmp20_1 + tmp2_1 + tmp5_1 + tmp9_1;
5477                                EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp10_1 + tmp19_1 + tmp1_1 + tmp21_1 + tmp5_1 + tmp8_1 + tmp9_1;
5478                                EM_S[INDEX2(6,6,8)]+=tmp11_1 + tmp15_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5479                                EM_S[INDEX2(7,6,8)]+=tmp12_1 + tmp16_1 + tmp19_1 + tmp21_1 + tmp23_1 + tmp4_1 + tmp8_1 + tmp9_1;
5480                                EM_S[INDEX2(0,7,8)]+=tmp10_1 + tmp11_1 + tmp15_1 + tmp18_1 + tmp3_1 + tmp8_1;
5481                              EM_S[INDEX2(1,7,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(1,7,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp18_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1;
5482                              EM_S[INDEX2(0,5,8)]+=tmp12_1 + tmp15_1 + tmp16_1 + tmp1_1 + tmp3_1 + tmp4_1 + tmp5_1 + tmp8_1;                              EM_S[INDEX2(2,7,8)]+=tmp13_1 + tmp14_1 + tmp15_1 + tmp17_1 + tmp20_1 + tmp3_1 + tmp4_1 + tmp8_1;
5483                              EM_S[INDEX2(3,4,8)]+=tmp10_1 + tmp11_1 + tmp22_1 + tmp23_1 + tmp3_1 + tmp8_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp13_1 + tmp14_1 + tmp19_1 + tmp21_1 + tmp2_1 + tmp3_1 + tmp4_1;
5484                              EM_S[INDEX2(2,4,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp23_1 + tmp2_1 + tmp3_1 + tmp6_1 + tmp7_1;                              EM_S[INDEX2(4,7,8)]+=tmp10_1 + tmp11_1 + tmp1_1 + tmp5_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5485                                EM_S[INDEX2(5,7,8)]+=tmp10_1 + tmp12_1 + tmp16_1 + tmp1_1 + tmp22_1 + tmp2_1 + tmp5_1 + tmp9_1;
5486                                EM_S[INDEX2(6,7,8)]+=tmp17_1 + tmp20_1 + tmp23_1 + tmp4_1 + tmp6_1 + tmp7_1 + tmp8_1 + tmp9_1;
5487                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp22_1 + tmp23_1 + tmp2_1 + tmp4_1 + tmp9_1;
5488                          }                          }
5489                          ///////////////                          ///////////////
5490                          // process B //                          // process B //
# Line 5484  void Brick::assemblePDESingleReduced(Pas Line 5501  void Brick::assemblePDESingleReduced(Pas
5501                              const double tmp5_1 = B_2*w17;                              const double tmp5_1 = B_2*w17;
5502                              const double tmp1_1 = B_2*w14;                              const double tmp1_1 = B_2*w14;
5503                              const double tmp0_1 = B_1*w13;                              const double tmp0_1 = B_1*w13;
5504                              EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(0,0,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5505                              EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(1,0,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5506                              EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(2,0,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
                             EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp1_1 + tmp4_1;  
5507                              EM_S[INDEX2(3,0,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(3,0,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
                             EM_S[INDEX2(5,4,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(0,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(1,6,8)]+=tmp2_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp5_1;  
                             EM_S[INDEX2(2,5,8)]+=tmp0_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(0,3,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
5508                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5509                                EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5510                                EM_S[INDEX2(6,0,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5511                                EM_S[INDEX2(7,0,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5512                                EM_S[INDEX2(0,1,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5513                                EM_S[INDEX2(1,1,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5514                                EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5515                                EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5516                                EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5517                                EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5518                                EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5519                                EM_S[INDEX2(7,1,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5520                                EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5521                              EM_S[INDEX2(1,2,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,2,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5522                              EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5523                                EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5524                                EM_S[INDEX2(4,2,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5525                                EM_S[INDEX2(5,2,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5526                                EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5527                                EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5528                                EM_S[INDEX2(0,3,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5529                                EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5530                                EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5531                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5532                              EM_S[INDEX2(2,0,8)]+=tmp0_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,3,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5533                              EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(5,3,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
                             EM_S[INDEX2(4,4,8)]+=tmp1_1 + tmp3_1 + tmp4_1;  
5534                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5535                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5536                                EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5537                                EM_S[INDEX2(1,4,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5538                                EM_S[INDEX2(2,4,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5539                                EM_S[INDEX2(3,4,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5540                                EM_S[INDEX2(4,4,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5541                                EM_S[INDEX2(5,4,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5542                                EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5543                                EM_S[INDEX2(7,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5544                                EM_S[INDEX2(0,5,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5545                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5546                              EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(2,5,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5547                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(3,5,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
                             EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(5,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(5,3,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(1,1,8)]+=tmp2_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp2_1 + tmp5_1;  
                             EM_S[INDEX2(0,0,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp1_1 + tmp4_1;  
                             EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(7,1,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
5548                              EM_S[INDEX2(4,5,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(4,5,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
                             EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
5549                              EM_S[INDEX2(5,5,8)]+=tmp1_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(5,5,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
                             EM_S[INDEX2(1,4,8)]+=tmp2_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(6,0,8)]+=tmp0_1 + tmp1_1 + tmp4_1;  
                             EM_S[INDEX2(7,5,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(2,1,8)]+=tmp0_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(4,2,8)]+=tmp1_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(1,0,8)]+=tmp2_1 + tmp3_1 + tmp5_1;  
5550                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(6,5,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5551                              EM_S[INDEX2(3,5,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(7,5,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
                             EM_S[INDEX2(0,1,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(7,0,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(4,6,8)]+=tmp1_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(5,2,8)]+=tmp1_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(6,1,8)]+=tmp0_1 + tmp1_1 + tmp4_1;  
                             EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp2_1 + tmp5_1;  
                             EM_S[INDEX2(0,2,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(7,4,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
5552                              EM_S[INDEX2(0,6,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(0,6,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5553                              EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp4_1;                              EM_S[INDEX2(1,6,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5554                              EM_S[INDEX2(4,3,8)]+=tmp1_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5555                                EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5556                                EM_S[INDEX2(4,6,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5557                                EM_S[INDEX2(5,6,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5558                                EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5559                                EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5560                                EM_S[INDEX2(0,7,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5561                              EM_S[INDEX2(1,7,8)]+=tmp2_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(1,7,8)]+=tmp2_1 + tmp3_1 + tmp5_1;
5562                              EM_S[INDEX2(0,5,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp4_1 + tmp5_1;
5563                              EM_S[INDEX2(3,4,8)]+=tmp0_1 + tmp2_1 + tmp5_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp5_1;
5564                              EM_S[INDEX2(2,4,8)]+=tmp0_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,7,8)]+=tmp1_1 + tmp3_1 + tmp4_1;
5565                                EM_S[INDEX2(5,7,8)]+=tmp1_1 + tmp2_1 + tmp3_1;
5566                                EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp1_1 + tmp4_1;
5567                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5568                          }                          }
5569                          ///////////////                          ///////////////
5570                          // process C //                          // process C //
# Line 5564  void Brick::assemblePDESingleReduced(Pas Line 5581  void Brick::assemblePDESingleReduced(Pas
5581                              const double tmp1_1 = C_2*w17;                              const double tmp1_1 = C_2*w17;
5582                              const double tmp3_1 = C_2*w14;                              const double tmp3_1 = C_2*w14;
5583                              const double tmp0_1 = C_1*w13;                              const double tmp0_1 = C_1*w13;
5584                              EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(0,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5585                              EM_S[INDEX2(4,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(1,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5586                              EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(2,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
                             EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
5587                              EM_S[INDEX2(3,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(3,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
                             EM_S[INDEX2(5,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(0,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(1,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(2,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(0,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;  
5588                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5589                                EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5590                                EM_S[INDEX2(6,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5591                                EM_S[INDEX2(7,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;
5592                                EM_S[INDEX2(0,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5593                                EM_S[INDEX2(1,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5594                                EM_S[INDEX2(2,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5595                                EM_S[INDEX2(3,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5596                                EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5597                                EM_S[INDEX2(5,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5598                                EM_S[INDEX2(6,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5599                                EM_S[INDEX2(7,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;
5600                                EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5601                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;                              EM_S[INDEX2(1,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5602                              EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5603                                EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5604                                EM_S[INDEX2(4,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5605                                EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5606                                EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5607                                EM_S[INDEX2(7,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;
5608                                EM_S[INDEX2(0,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5609                                EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5610                                EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5611                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5612                              EM_S[INDEX2(2,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5613                              EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(5,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
                             EM_S[INDEX2(4,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
5614                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5615                                EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;
5616                                EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5617                                EM_S[INDEX2(1,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5618                                EM_S[INDEX2(2,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5619                                EM_S[INDEX2(3,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5620                                EM_S[INDEX2(4,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5621                                EM_S[INDEX2(5,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5622                                EM_S[INDEX2(6,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5623                                EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
5624                                EM_S[INDEX2(0,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5625                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5626                              EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(2,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5627                              EM_S[INDEX2(2,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;                              EM_S[INDEX2(3,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
                             EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(5,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(4,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(1,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;  
                             EM_S[INDEX2(3,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;  
                             EM_S[INDEX2(0,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(5,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(7,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
5628                              EM_S[INDEX2(4,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(4,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
                             EM_S[INDEX2(0,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
5629                              EM_S[INDEX2(5,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(5,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
                             EM_S[INDEX2(1,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(6,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;  
                             EM_S[INDEX2(2,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;  
                             EM_S[INDEX2(2,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(4,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;  
                             EM_S[INDEX2(1,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;  
5630                              EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(6,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
5631                              EM_S[INDEX2(3,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(7,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;
                             EM_S[INDEX2(0,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(7,0,8)]+=tmp1_1 + tmp4_1 + tmp5_1;  
                             EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;  
                             EM_S[INDEX2(5,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;  
                             EM_S[INDEX2(6,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(3,1,8)]+=tmp1_1 + tmp2_1 + tmp4_1;  
                             EM_S[INDEX2(0,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;  
                             EM_S[INDEX2(7,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;  
5632                              EM_S[INDEX2(0,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;                              EM_S[INDEX2(0,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5633                              EM_S[INDEX2(6,2,8)]+=tmp0_1 + tmp1_1 + tmp5_1;                              EM_S[INDEX2(1,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5634                              EM_S[INDEX2(4,3,8)]+=tmp0_1 + tmp1_1 + tmp2_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5635                                EM_S[INDEX2(3,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5636                                EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5637                                EM_S[INDEX2(5,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5638                                EM_S[INDEX2(6,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5639                                EM_S[INDEX2(7,6,8)]+=tmp0_1 + tmp3_1 + tmp5_1;
5640                                EM_S[INDEX2(0,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5641                              EM_S[INDEX2(1,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;                              EM_S[INDEX2(1,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5642                              EM_S[INDEX2(0,5,8)]+=tmp2_1 + tmp3_1 + tmp4_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5643                              EM_S[INDEX2(3,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5644                              EM_S[INDEX2(2,4,8)]+=tmp3_1 + tmp4_1 + tmp5_1;                              EM_S[INDEX2(4,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5645                                EM_S[INDEX2(5,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5646                                EM_S[INDEX2(6,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5647                                EM_S[INDEX2(7,7,8)]+=tmp0_1 + tmp2_1 + tmp3_1;
5648                          }                          }
5649                          ///////////////                          ///////////////
5650                          // process D //                          // process D //
# Line 5635  void Brick::assemblePDESingleReduced(Pas Line 5652  void Brick::assemblePDESingleReduced(Pas
5652                          if (!D.isEmpty()) {                          if (!D.isEmpty()) {
5653                              add_EM_S=true;                              add_EM_S=true;
5654                              const double* D_p=const_cast<escript::Data*>(&D)->getSampleDataRO(e);                              const double* D_p=const_cast<escript::Data*>(&D)->getSampleDataRO(e);
5655                              const double D_0 = D_p[0];                              const double tmp0_1 = D_p[0]*w18;
5656                              const double tmp0_1 = D_0*w18;                              EM_S[INDEX2(0,0,8)]+=tmp0_1;
5657                              EM_S[INDEX2(7,3,8)]+=tmp0_1;                              EM_S[INDEX2(1,0,8)]+=tmp0_1;
5658                              EM_S[INDEX2(4,7,8)]+=tmp0_1;                              EM_S[INDEX2(2,0,8)]+=tmp0_1;
                             EM_S[INDEX2(1,3,8)]+=tmp0_1;  
                             EM_S[INDEX2(6,4,8)]+=tmp0_1;  
5659                              EM_S[INDEX2(3,0,8)]+=tmp0_1;                              EM_S[INDEX2(3,0,8)]+=tmp0_1;
                             EM_S[INDEX2(5,4,8)]+=tmp0_1;  
                             EM_S[INDEX2(0,7,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,6,8)]+=tmp0_1;  
                             EM_S[INDEX2(2,6,8)]+=tmp0_1;  
                             EM_S[INDEX2(1,6,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(3,7,8)]+=tmp0_1;  
                             EM_S[INDEX2(2,5,8)]+=tmp0_1;  
                             EM_S[INDEX2(0,3,8)]+=tmp0_1;  
                             EM_S[INDEX2(7,2,8)]+=tmp0_1;  
5660                              EM_S[INDEX2(4,0,8)]+=tmp0_1;                              EM_S[INDEX2(4,0,8)]+=tmp0_1;
5661                                EM_S[INDEX2(5,0,8)]+=tmp0_1;
5662                                EM_S[INDEX2(6,0,8)]+=tmp0_1;
5663                                EM_S[INDEX2(7,0,8)]+=tmp0_1;
5664                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
5665                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
5666                                EM_S[INDEX2(2,1,8)]+=tmp0_1;
5667                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
5668                                EM_S[INDEX2(4,1,8)]+=tmp0_1;
5669                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
5670                                EM_S[INDEX2(6,1,8)]+=tmp0_1;
5671                                EM_S[INDEX2(7,1,8)]+=tmp0_1;
5672                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
5673                              EM_S[INDEX2(1,2,8)]+=tmp0_1;                              EM_S[INDEX2(1,2,8)]+=tmp0_1;
5674                              EM_S[INDEX2(6,7,8)]+=tmp0_1;                              EM_S[INDEX2(2,2,8)]+=tmp0_1;
5675                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
5676                                EM_S[INDEX2(4,2,8)]+=tmp0_1;
5677                                EM_S[INDEX2(5,2,8)]+=tmp0_1;
5678                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
5679                                EM_S[INDEX2(7,2,8)]+=tmp0_1;
5680                                EM_S[INDEX2(0,3,8)]+=tmp0_1;
5681                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
5682                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
5683                              EM_S[INDEX2(3,3,8)]+=tmp0_1;                              EM_S[INDEX2(3,3,8)]+=tmp0_1;
5684                              EM_S[INDEX2(2,0,8)]+=tmp0_1;                              EM_S[INDEX2(4,3,8)]+=tmp0_1;
5685                              EM_S[INDEX2(7,6,8)]+=tmp0_1;                              EM_S[INDEX2(5,3,8)]+=tmp0_1;
                             EM_S[INDEX2(4,4,8)]+=tmp0_1;  
5686                              EM_S[INDEX2(6,3,8)]+=tmp0_1;                              EM_S[INDEX2(6,3,8)]+=tmp0_1;
5687                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
5688                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
5689                                EM_S[INDEX2(1,4,8)]+=tmp0_1;
5690                                EM_S[INDEX2(2,4,8)]+=tmp0_1;
5691                                EM_S[INDEX2(3,4,8)]+=tmp0_1;
5692                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
5693                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
5694                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
5695                                EM_S[INDEX2(7,4,8)]+=tmp0_1;
5696                                EM_S[INDEX2(0,5,8)]+=tmp0_1;
5697                              EM_S[INDEX2(1,5,8)]+=tmp0_1;                              EM_S[INDEX2(1,5,8)]+=tmp0_1;
5698                              EM_S[INDEX2(3,6,8)]+=tmp0_1;                              EM_S[INDEX2(2,5,8)]+=tmp0_1;
5699                              EM_S[INDEX2(2,2,8)]+=tmp0_1;                              EM_S[INDEX2(3,5,8)]+=tmp0_1;
                             EM_S[INDEX2(7,7,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,7,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,3,8)]+=tmp0_1;  
                             EM_S[INDEX2(4,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(1,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(2,7,8)]+=tmp0_1;  
                             EM_S[INDEX2(3,2,8)]+=tmp0_1;  
                             EM_S[INDEX2(0,0,8)]+=tmp0_1;  
                             EM_S[INDEX2(6,6,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,0,8)]+=tmp0_1;  
                             EM_S[INDEX2(7,1,8)]+=tmp0_1;  
5700                              EM_S[INDEX2(4,5,8)]+=tmp0_1;                              EM_S[INDEX2(4,5,8)]+=tmp0_1;
                             EM_S[INDEX2(0,4,8)]+=tmp0_1;  
5701                              EM_S[INDEX2(5,5,8)]+=tmp0_1;                              EM_S[INDEX2(5,5,8)]+=tmp0_1;
                             EM_S[INDEX2(1,4,8)]+=tmp0_1;  
                             EM_S[INDEX2(6,0,8)]+=tmp0_1;  
                             EM_S[INDEX2(7,5,8)]+=tmp0_1;  
                             EM_S[INDEX2(2,3,8)]+=tmp0_1;  
                             EM_S[INDEX2(2,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(4,2,8)]+=tmp0_1;  
                             EM_S[INDEX2(1,0,8)]+=tmp0_1;  
5702                              EM_S[INDEX2(6,5,8)]+=tmp0_1;                              EM_S[INDEX2(6,5,8)]+=tmp0_1;
5703                              EM_S[INDEX2(3,5,8)]+=tmp0_1;                              EM_S[INDEX2(7,5,8)]+=tmp0_1;
                             EM_S[INDEX2(0,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(7,0,8)]+=tmp0_1;  
                             EM_S[INDEX2(4,6,8)]+=tmp0_1;  
                             EM_S[INDEX2(5,2,8)]+=tmp0_1;  
                             EM_S[INDEX2(6,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(3,1,8)]+=tmp0_1;  
                             EM_S[INDEX2(0,2,8)]+=tmp0_1;  
                             EM_S[INDEX2(7,4,8)]+=tmp0_1;  
5704                              EM_S[INDEX2(0,6,8)]+=tmp0_1;                              EM_S[INDEX2(0,6,8)]+=tmp0_1;
5705                              EM_S[INDEX2(6,2,8)]+=tmp0_1;                              EM_S[INDEX2(1,6,8)]+=tmp0_1;
5706                              EM_S[INDEX2(4,3,8)]+=tmp0_1;                              EM_S[INDEX2(2,6,8)]+=tmp0_1;
5707                                EM_S[INDEX2(3,6,8)]+=tmp0_1;
5708                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
5709                                EM_S[INDEX2(5,6,8)]+=tmp0_1;
5710                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
5711                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
5712                                EM_S[INDEX2(0,7,8)]+=tmp0_1;
5713                              EM_S[INDEX2(1,7,8)]+=tmp0_1;                              EM_S[INDEX2(1,7,8)]+=tmp0_1;
5714                              EM_S[INDEX2(0,5,8)]+=tmp0_1;                              EM_S[INDEX2(2,7,8)]+=tmp0_1;
5715                              EM_S[INDEX2(3,4,8)]+=tmp0_1;                              EM_S[INDEX2(3,7,8)]+=tmp0_1;
5716                              EM_S[INDEX2(2,4,8)]+=tmp0_1;                              EM_S[INDEX2(4,7,8)]+=tmp0_1;
5717                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
5718                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
5719                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
5720                          }                          }
5721                          ///////////////                          ///////////////
5722                          // process X //                          // process X //
# Line 5745  void Brick::assemblePDESingleReduced(Pas Line 5761  void Brick::assemblePDESingleReduced(Pas
5761    
5762                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)
5763                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;
5764                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
5765                          rowIndex.push_back(m_dofMap[firstNode]);                                  add_EM_F, firstNode);
                         rowIndex.push_back(m_dofMap[firstNode+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);  
                         if (add_EM_F) {  
                             double *F_p=rhs.getSampleDataRW(0);  
                             for (index_t i=0; i<rowIndex.size(); i++) {  
                                 if (rowIndex[i]<getNumDOF()) {  
                                     F_p[rowIndex[i]]+=EM_F[i];  
                                 }  
                             }  
                         }  
                         if (add_EM_S) {  
                             addToSystemMatrix(mat, rowIndex, 1, rowIndex, 1, EM_S);  
                         }  
5766                      } // end k0 loop                      } // end k0 loop
5767                  } // end k1 loop                  } // end k1 loop
5768              } // end k2 loop              } // end k2 loop
# Line 8911  void Brick::assemblePDESystem(Paso_Syste Line 8909  void Brick::assemblePDESystem(Paso_Syste
8909    
8910                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)
8911                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;
8912                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
8913                          rowIndex.push_back(m_dofMap[firstNode]);                                  add_EM_F, firstNode, numEq, numComp);
                         rowIndex.push_back(m_dofMap[firstNode+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);  
                         if (add_EM_F) {  
                             double *F_p=rhs.getSampleDataRW(0);  
                             for (index_t i=0; i<rowIndex.size(); i++) {  
                                 if (rowIndex[i]<getNumDOF()) {  
                                     for (index_t eq=0; eq<numEq; eq++) {  
                                         F_p[INDEX2(eq,rowIndex[i],numEq)]+=EM_F[INDEX2(eq,i,numEq)];  
                                     }  
                                 }  
                             }  
                         }  
                         if (add_EM_S) {  
                             addToSystemMatrix(mat, rowIndex, numEq, rowIndex, numComp, EM_S);  
                         }  
8914                      } // end k0 loop                      } // end k0 loop
8915                  } // end k1 loop                  } // end k1 loop
8916              } // end k2 loop              } // end k2 loop
# Line 9401  void Brick::assemblePDESystemReduced(Pas Line 9379  void Brick::assemblePDESystemReduced(Pas
9379    
9380                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)                          // add to matrix (if add_EM_S) and RHS (if add_EM_F)
9381                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;                          const index_t firstNode=m_N0*m_N1*k2+m_N0*k1+k0;
9382                          IndexVector rowIndex;                          addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9383                          rowIndex.push_back(m_dofMap[firstNode]);                                  add_EM_F, firstNode, numEq, numComp);
                         rowIndex.push_back(m_dofMap[firstNode+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*m_N1+1]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)]);  
                         rowIndex.push_back(m_dofMap[firstNode+m_N0*(m_N1+1)+1]);  
                         if (add_EM_F) {  
                             double *F_p=rhs.getSampleDataRW(0);  
                             for (index_t i=0; i<rowIndex.size(); i++) {  
                                 if (rowIndex[i]<getNumDOF()) {  
                                     for (index_t eq=0; eq<numEq; eq++) {  
                                         F_p[INDEX2(eq,rowIndex[i],numEq)]+=EM_F[INDEX2(eq,i,numEq)];  
                                     }  
                                 }  
                             }  
                         }  
                         if (add_EM_S) {  
                             addToSystemMatrix(mat, rowIndex, numEq, rowIndex, numComp, EM_S);  
                         }  
9384                      } // end k0 loop                      } // end k0 loop
9385                  } // end k1 loop                  } // end k1 loop
9386              } // end k2 loop              } // end k2 loop
# Line 9434  void Brick::assemblePDESystemReduced(Pas Line 9392  void Brick::assemblePDESystemReduced(Pas
9392  void Brick::assemblePDEBoundarySingle(Paso_SystemMatrix* mat,  void Brick::assemblePDEBoundarySingle(Paso_SystemMatrix* mat,
9393        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
9394  {  {
9395        const double h0 = m_l0/m_gNE0;
9396        const double h1 = m_l1/m_gNE1;
9397        const double h2 = m_l2/m_gNE2;
9398        const double w0 = 0.0018607582807716854616*h1*h2;
9399        const double w1 = 0.025917019497006092316*h1*h2;
9400        const double w2 = 0.0069444444444444444444*h1*h2;
9401        const double w3 = 0.00049858867864229740201*h1*h2;
9402        const double w4 = 0.09672363354357992482*h1*h2;
9403        const double w5 = 0.055555555555555555556*h1*h2;
9404        const double w6 = 0.11111111111111111111*h1*h2;
9405        const double w7 = 0.027777777777777777778*h1*h2;
9406        const double w8 = 0.1555021169820365539*h1*h2;
9407        const double w9 = 0.041666666666666666667*h1*h2;
9408        const double w10 = 0.01116454968463011277*h1*h2;
9409        const double w11 = 0.25*h1*h2;
9410        const double w12 = 0.0018607582807716854616*h0*h2;
9411        const double w13 = 0.025917019497006092316*h0*h2;
9412        const double w14 = 0.0069444444444444444444*h0*h2;
9413        const double w15 = 0.00049858867864229740201*h0*h2;
9414        const double w16 = 0.09672363354357992482*h0*h2;
9415        const double w17 = 0.055555555555555555556*h0*h2;
9416        const double w18 = 0.11111111111111111111*h0*h2;
9417        const double w19 = 0.027777777777777777778*h0*h2;
9418        const double w20 = 0.1555021169820365539*h0*h2;
9419        const double w21 = 0.041666666666666666667*h0*h2;
9420        const double w22 = 0.01116454968463011277*h0*h2;
9421        const double w23 = 0.25*h0*h2;
9422        const double w24 = 0.0018607582807716854616*h0*h1;
9423        const double w25 = 0.025917019497006092316*h0*h1;
9424        const double w26 = 0.0069444444444444444444*h0*h1;
9425        const double w27 = 0.00049858867864229740201*h0*h1;
9426        const double w28 = 0.09672363354357992482*h0*h1;
9427        const double w29 = 0.055555555555555555556*h0*h1;
9428        const double w30 = 0.027777777777777777778*h0*h1;
9429        const double w31 = 0.11111111111111111111*h0*h1;
9430        const double w32 = 0.1555021169820365539*h0*h1;
9431        const double w33 = 0.041666666666666666667*h0*h1;
9432        const double w34 = 0.01116454968463011277*h0*h1;
9433        const double w35 = 0.25*h0*h1;
9434        const bool add_EM_S=!d.isEmpty();
9435        const bool add_EM_F=!y.isEmpty();
9436        rhs.requireWrite();
9437    #pragma omp parallel
9438        {
9439            if (m_faceOffset[0] > -1) {
9440                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9441    #pragma omp for
9442                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9443                        for (index_t k1=0; k1<m_NE1; ++k1) {
9444                            vector<double> EM_S(8*8, 0);
9445                            vector<double> EM_F(8, 0);
9446                            const index_t e = INDEX2(k1,k2,m_NE1);
9447                            ///////////////
9448                            // process d //
9449                            ///////////////
9450                            if (add_EM_S) {
9451                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9452                                if (d.actsExpanded()) {
9453                                    const double d_0 = d_p[0];
9454                                    const double d_1 = d_p[1];
9455                                    const double d_2 = d_p[2];
9456                                    const double d_3 = d_p[3];
9457                                    const double tmp3_0 = d_1 + d_3;
9458                                    const double tmp6_0 = d_0 + d_1 + d_2 + d_3;
9459                                    const double tmp2_0 = d_0 + d_2;
9460                                    const double tmp0_0 = d_0 + d_1;
9461                                    const double tmp4_0 = d_0 + d_3;
9462                                    const double tmp1_0 = d_2 + d_3;
9463                                    const double tmp5_0 = d_1 + d_2;
9464                                    const double tmp14_1 = d_0*w4;
9465                                    const double tmp17_1 = d_3*w4;
9466                                    const double tmp12_1 = d_1*w4;
9467                                    const double tmp9_1 = d_2*w4;
9468                                    const double tmp4_1 = tmp3_0*w0;
9469                                    const double tmp3_1 = tmp3_0*w1;
9470                                    const double tmp7_1 = tmp0_0*w1;
9471                                    const double tmp8_1 = d_1*w3;
9472                                    const double tmp16_1 = d_0*w3;
9473                                    const double tmp18_1 = tmp6_0*w2;
9474                                    const double tmp1_1 = tmp1_0*w1;
9475                                    const double tmp15_1 = tmp5_0*w2;
9476                                    const double tmp6_1 = tmp1_0*w0;
9477                                    const double tmp2_1 = tmp2_0*w0;
9478                                    const double tmp13_1 = d_3*w3;
9479                                    const double tmp5_1 = tmp2_0*w1;
9480                                    const double tmp10_1 = tmp4_0*w2;
9481                                    const double tmp11_1 = d_2*w3;
9482                                    const double tmp0_1 = tmp0_0*w0;
9483                                    EM_S[INDEX2(0,0,8)]+=tmp13_1 + tmp14_1 + tmp15_1;
9484                                    EM_S[INDEX2(2,0,8)]+=tmp6_1 + tmp7_1;
9485                                    EM_S[INDEX2(4,0,8)]+=tmp4_1 + tmp5_1;
9486                                    EM_S[INDEX2(6,0,8)]+=tmp18_1;
9487                                    EM_S[INDEX2(0,2,8)]+=tmp6_1 + tmp7_1;
9488                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9489                                    EM_S[INDEX2(4,2,8)]+=tmp18_1;
9490                                    EM_S[INDEX2(6,2,8)]+=tmp2_1 + tmp3_1;
9491                                    EM_S[INDEX2(0,4,8)]+=tmp4_1 + tmp5_1;
9492                                    EM_S[INDEX2(2,4,8)]+=tmp18_1;
9493                                    EM_S[INDEX2(4,4,8)]+=tmp10_1 + tmp8_1 + tmp9_1;
9494                                    EM_S[INDEX2(6,4,8)]+=tmp0_1 + tmp1_1;
9495                                    EM_S[INDEX2(0,6,8)]+=tmp18_1;
9496                                    EM_S[INDEX2(2,6,8)]+=tmp2_1 + tmp3_1;
9497                                    EM_S[INDEX2(4,6,8)]+=tmp0_1 + tmp1_1;
9498                                    EM_S[INDEX2(6,6,8)]+=tmp15_1 + tmp16_1 + tmp17_1;
9499                                } else { /* constant data */
9500                                    const double tmp0_1 = d_p[0]*w5;
9501                                    const double tmp2_1 = d_p[0]*w7;
9502                                    const double tmp1_1 = d_p[0]*w6;
9503                                    EM_S[INDEX2(0,0,8)]+=tmp1_1;
9504                                    EM_S[INDEX2(2,0,8)]+=tmp0_1;
9505                                    EM_S[INDEX2(4,0,8)]+=tmp0_1;
9506                                    EM_S[INDEX2(6,0,8)]+=tmp2_1;
9507                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
9508                                    EM_S[INDEX2(2,2,8)]+=tmp1_1;
9509                                    EM_S[INDEX2(4,2,8)]+=tmp2_1;
9510                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
9511                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
9512                                    EM_S[INDEX2(2,4,8)]+=tmp2_1;
9513                                    EM_S[INDEX2(4,4,8)]+=tmp1_1;
9514                                    EM_S[INDEX2(6,4,8)]+=tmp0_1;
9515                                    EM_S[INDEX2(0,6,8)]+=tmp2_1;
9516                                    EM_S[INDEX2(2,6,8)]+=tmp0_1;
9517                                    EM_S[INDEX2(4,6,8)]+=tmp0_1;
9518                                    EM_S[INDEX2(6,6,8)]+=tmp1_1;
9519                                }
9520                            }
9521                            ///////////////
9522                            // process y //
9523                            ///////////////
9524                            if (add_EM_F) {
9525                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9526                                if (y.actsExpanded()) {
9527                                    const double y_0 = y_p[0];
9528                                    const double y_1 = y_p[1];
9529                                    const double y_2 = y_p[2];
9530                                    const double y_3 = y_p[3];
9531                                    const double tmp0_0 = y_1 + y_2;
9532                                    const double tmp1_0 = y_0 + y_3;
9533                                    const double tmp2_1 = w10*y_3;
9534                                    const double tmp8_1 = w10*y_0;
9535                                    const double tmp5_1 = w10*y_2;
9536                                    const double tmp3_1 = w8*y_1;
9537                                    const double tmp9_1 = w8*y_3;
9538                                    const double tmp0_1 = w8*y_0;
9539                                    const double tmp1_1 = tmp0_0*w9;
9540                                    const double tmp7_1 = w8*y_2;
9541                                    const double tmp4_1 = tmp1_0*w9;
9542                                    const double tmp6_1 = w10*y_1;
9543                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
9544                                    EM_F[2]+=tmp3_1 + tmp4_1 + tmp5_1;
9545                                    EM_F[4]+=tmp4_1 + tmp6_1 + tmp7_1;
9546                                    EM_F[6]+=tmp1_1 + tmp8_1 + tmp9_1;
9547                                } else { /* constant data */
9548                                    const double tmp0_1 = w11*y_p[0];
9549                                    EM_F[0]+=tmp0_1;
9550                                    EM_F[2]+=tmp0_1;
9551                                    EM_F[4]+=tmp0_1;
9552                                    EM_F[6]+=tmp0_1;
9553                                }
9554                            }
9555                            const index_t firstNode=m_N0*m_N1*k2+m_N0*k1;
9556                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9557                                    add_EM_F, firstNode);
9558                        } // k1 loop
9559                    } // k2 loop
9560                } // colouring
9561            } // face 0
9562    
9563            if (m_faceOffset[1] > -1) {
9564                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9565    #pragma omp for
9566                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9567                        for (index_t k1=0; k1<m_NE1; ++k1) {
9568                            vector<double> EM_S(8*8, 0);
9569                            vector<double> EM_F(8, 0);
9570                            const index_t e = m_faceOffset[1]+INDEX2(k1,k2,m_NE1);
9571                            ///////////////
9572                            // process d //
9573                            ///////////////
9574                            if (add_EM_S) {
9575                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9576                                if (d.actsExpanded()) {
9577                                    const double d_0 = d_p[0];
9578                                    const double d_1 = d_p[1];
9579                                    const double d_2 = d_p[2];
9580                                    const double d_3 = d_p[3];
9581                                    const double tmp1_0 = d_1 + d_3;
9582                                    const double tmp6_0 = d_0 + d_1 + d_2 + d_3;
9583                                    const double tmp0_0 = d_0 + d_2;
9584                                    const double tmp3_0 = d_0 + d_1;
9585                                    const double tmp4_0 = d_0 + d_3;
9586                                    const double tmp2_0 = d_2 + d_3;
9587                                    const double tmp5_0 = d_1 + d_2;
9588                                    const double tmp10_1 = d_3*w4;
9589                                    const double tmp13_1 = tmp2_0*w1;
9590                                    const double tmp16_1 = d_0*w4;
9591                                    const double tmp18_1 = d_2*w4;
9592                                    const double tmp12_1 = tmp3_0*w0;
9593                                    const double tmp3_1 = tmp3_0*w1;
9594                                    const double tmp5_1 = tmp0_0*w1;
9595                                    const double tmp17_1 = d_1*w3;
9596                                    const double tmp9_1 = d_0*w3;
9597                                    const double tmp14_1 = tmp6_0*w2;
9598                                    const double tmp1_1 = tmp1_0*w1;
9599                                    const double tmp11_1 = tmp5_0*w2;
9600                                    const double tmp4_1 = tmp1_0*w0;
9601                                    const double tmp2_1 = tmp2_0*w0;
9602                                    const double tmp15_1 = d_3*w3;
9603                                    const double tmp7_1 = d_1*w4;
9604                                    const double tmp8_1 = tmp4_0*w2;
9605                                    const double tmp6_1 = d_2*w3;
9606                                    const double tmp0_1 = tmp0_0*w0;
9607                                    EM_S[INDEX2(1,1,8)]+=tmp11_1 + tmp15_1 + tmp16_1;
9608                                    EM_S[INDEX2(3,1,8)]+=tmp2_1 + tmp3_1;
9609                                    EM_S[INDEX2(5,1,8)]+=tmp4_1 + tmp5_1;
9610                                    EM_S[INDEX2(7,1,8)]+=tmp14_1;
9611                                    EM_S[INDEX2(1,3,8)]+=tmp2_1 + tmp3_1;
9612                                    EM_S[INDEX2(3,3,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
9613                                    EM_S[INDEX2(5,3,8)]+=tmp14_1;
9614                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1;
9615                                    EM_S[INDEX2(1,5,8)]+=tmp4_1 + tmp5_1;
9616                                    EM_S[INDEX2(3,5,8)]+=tmp14_1;
9617                                    EM_S[INDEX2(5,5,8)]+=tmp17_1 + tmp18_1 + tmp8_1;
9618                                    EM_S[INDEX2(7,5,8)]+=tmp12_1 + tmp13_1;
9619                                    EM_S[INDEX2(1,7,8)]+=tmp14_1;
9620                                    EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp1_1;
9621                                    EM_S[INDEX2(5,7,8)]+=tmp12_1 + tmp13_1;
9622                                    EM_S[INDEX2(7,7,8)]+=tmp10_1 + tmp11_1 + tmp9_1;
9623                                } else { /* constant data */
9624                                    const double tmp0_1 = d_p[0]*w5;
9625                                    const double tmp2_1 = d_p[0]*w7;
9626                                    const double tmp1_1 = d_p[0]*w6;
9627                                    EM_S[INDEX2(1,1,8)]+=tmp1_1;
9628                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
9629                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
9630                                    EM_S[INDEX2(7,1,8)]+=tmp2_1;
9631                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
9632                                    EM_S[INDEX2(3,3,8)]+=tmp1_1;
9633                                    EM_S[INDEX2(5,3,8)]+=tmp2_1;
9634                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
9635                                    EM_S[INDEX2(1,5,8)]+=tmp0_1;
9636                                    EM_S[INDEX2(3,5,8)]+=tmp2_1;
9637                                    EM_S[INDEX2(5,5,8)]+=tmp1_1;
9638                                    EM_S[INDEX2(7,5,8)]+=tmp0_1;
9639                                    EM_S[INDEX2(1,7,8)]+=tmp2_1;
9640                                    EM_S[INDEX2(3,7,8)]+=tmp0_1;
9641                                    EM_S[INDEX2(5,7,8)]+=tmp0_1;
9642                                    EM_S[INDEX2(7,7,8)]+=tmp1_1;
9643                                }
9644                            }
9645                            ///////////////
9646                            // process y //
9647                            ///////////////
9648                            if (add_EM_F) {
9649                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9650                                if (y.actsExpanded()) {
9651                                    const double y_0 = y_p[0];
9652                                    const double y_1 = y_p[1];
9653                                    const double y_2 = y_p[2];
9654                                    const double y_3 = y_p[3];
9655                                    const double tmp0_0 = y_1 + y_2;
9656                                    const double tmp1_0 = y_0 + y_3;
9657                                    const double tmp2_1 = w10*y_3;
9658                                    const double tmp8_1 = w10*y_0;
9659                                    const double tmp5_1 = w10*y_2;
9660                                    const double tmp3_1 = w8*y_1;
9661                                    const double tmp9_1 = w8*y_3;
9662                                    const double tmp0_1 = w8*y_0;
9663                                    const double tmp1_1 = tmp0_0*w9;
9664                                    const double tmp7_1 = w8*y_2;
9665                                    const double tmp4_1 = tmp1_0*w9;
9666                                    const double tmp6_1 = w10*y_1;
9667                                    EM_F[1]+=tmp0_1 + tmp1_1 + tmp2_1;
9668                                    EM_F[3]+=tmp3_1 + tmp4_1 + tmp5_1;
9669                                    EM_F[5]+=tmp4_1 + tmp6_1 + tmp7_1;
9670                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
9671                                } else { /* constant data */
9672                                    const double tmp0_1 = w11*y_p[0];
9673                                    EM_F[1]+=tmp0_1;
9674                                    EM_F[3]+=tmp0_1;
9675                                    EM_F[5]+=tmp0_1;
9676                                    EM_F[7]+=tmp0_1;
9677                                }
9678                            }
9679                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(k1+1)-2;
9680                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9681                                    add_EM_F, firstNode);
9682                        } // k1 loop
9683                    } // k2 loop
9684                } // colouring
9685            } // face 1
9686    
9687            if (m_faceOffset[2] > -1) {
9688                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9689    #pragma omp for
9690                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9691                        for (index_t k0=0; k0<m_NE0; ++k0) {
9692                            vector<double> EM_S(8*8, 0);
9693                            vector<double> EM_F(8, 0);
9694                            const index_t e = m_faceOffset[2]+INDEX2(k0,k2,m_NE0);
9695                            ///////////////
9696                            // process d //
9697                            ///////////////
9698                            if (add_EM_S) {
9699                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9700                                if (d.actsExpanded()) {
9701                                    const double d_0 = d_p[0];
9702                                    const double d_1 = d_p[1];
9703                                    const double d_2 = d_p[2];
9704                                    const double d_3 = d_p[3];
9705                                    const double tmp2_0 = d_1 + d_3;
9706                                    const double tmp5_0 = d_0 + d_1 + d_2 + d_3;
9707                                    const double tmp3_0 = d_0 + d_2;
9708                                    const double tmp1_0 = d_0 + d_1;
9709                                    const double tmp4_0 = d_0 + d_3;
9710                                    const double tmp0_0 = d_2 + d_3;
9711                                    const double tmp6_0 = d_1 + d_2;
9712                                    const double tmp2_1 = tmp2_0*w13;
9713                                    const double tmp14_1 = d_3*w15;
9714                                    const double tmp0_1 = tmp0_0*w13;
9715                                    const double tmp3_1 = tmp3_0*w12;
9716                                    const double tmp17_1 = tmp1_0*w13;
9717                                    const double tmp18_1 = tmp0_0*w12;
9718                                    const double tmp8_1 = d_1*w15;
9719                                    const double tmp16_1 = d_0*w15;
9720                                    const double tmp11_1 = d_2*w15;
9721                                    const double tmp5_1 = tmp2_0*w12;
9722                                    const double tmp15_1 = d_3*w16;
9723                                    const double tmp13_1 = tmp6_0*w14;
9724                                    const double tmp1_1 = tmp1_0*w12;
9725                                    const double tmp7_1 = tmp4_0*w14;
9726                                    const double tmp12_1 = d_0*w16;
9727                                    const double tmp10_1 = d_1*w16;
9728                                    const double tmp6_1 = d_2*w16;
9729                                    const double tmp9_1 = tmp5_0*w14;
9730                                    const double tmp4_1 = tmp3_0*w13;
9731                                    EM_S[INDEX2(0,0,8)]+=tmp12_1 + tmp13_1 + tmp14_1;
9732                                    EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp18_1;
9733                                    EM_S[INDEX2(4,0,8)]+=tmp4_1 + tmp5_1;
9734                                    EM_S[INDEX2(5,0,8)]+=tmp9_1;
9735                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp18_1;
9736                                    EM_S[INDEX2(1,1,8)]+=tmp10_1 + tmp11_1 + tmp7_1;
9737                                    EM_S[INDEX2(4,1,8)]+=tmp9_1;
9738                                    EM_S[INDEX2(5,1,8)]+=tmp2_1 + tmp3_1;
9739                                    EM_S[INDEX2(0,4,8)]+=tmp4_1 + tmp5_1;
9740                                    EM_S[INDEX2(1,4,8)]+=tmp9_1;
9741                                    EM_S[INDEX2(4,4,8)]+=tmp6_1 + tmp7_1 + tmp8_1;
9742                                    EM_S[INDEX2(5,4,8)]+=tmp0_1 + tmp1_1;
9743                                    EM_S[INDEX2(0,5,8)]+=tmp9_1;
9744                                    EM_S[INDEX2(1,5,8)]+=tmp2_1 + tmp3_1;
9745                                    EM_S[INDEX2(4,5,8)]+=tmp0_1 + tmp1_1;
9746                                    EM_S[INDEX2(5,5,8)]+=tmp13_1 + tmp15_1 + tmp16_1;
9747                                } else { /* constant data */
9748                                    const double tmp0_1 = d_p[0]*w17;
9749                                    const double tmp2_1 = d_p[0]*w19;
9750                                    const double tmp1_1 = d_p[0]*w18;
9751                                    EM_S[INDEX2(0,0,8)]+=tmp1_1;
9752                                    EM_S[INDEX2(1,0,8)]+=tmp0_1;
9753                                    EM_S[INDEX2(4,0,8)]+=tmp0_1;
9754                                    EM_S[INDEX2(5,0,8)]+=tmp2_1;
9755                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
9756                                    EM_S[INDEX2(1,1,8)]+=tmp1_1;
9757                                    EM_S[INDEX2(4,1,8)]+=tmp2_1;
9758                                    EM_S[INDEX2(5,1,8)]+=tmp0_1;
9759                                    EM_S[INDEX2(0,4,8)]+=tmp0_1;
9760                                    EM_S[INDEX2(1,4,8)]+=tmp2_1;
9761                                    EM_S[INDEX2(4,4,8)]+=tmp1_1;
9762                                    EM_S[INDEX2(5,4,8)]+=tmp0_1;
9763                                    EM_S[INDEX2(0,5,8)]+=tmp2_1;
9764                                    EM_S[INDEX2(1,5,8)]+=tmp0_1;
9765                                    EM_S[INDEX2(4,5,8)]+=tmp0_1;
9766                                    EM_S[INDEX2(5,5,8)]+=tmp1_1;
9767                                }
9768                            }
9769                            ///////////////
9770                            // process y //
9771                            ///////////////
9772                            if (add_EM_F) {
9773                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9774                                if (y.actsExpanded()) {
9775                                    const double y_0 = y_p[0];
9776                                    const double y_1 = y_p[1];
9777                                    const double y_2 = y_p[2];
9778                                    const double y_3 = y_p[3];
9779                                    const double tmp0_0 = y_1 + y_2;
9780                                    const double tmp1_0 = y_0 + y_3;
9781                                    const double tmp0_1 = w22*y_3;
9782                                    const double tmp6_1 = w22*y_1;
9783                                    const double tmp3_1 = w22*y_2;
9784                                    const double tmp5_1 = w20*y_1;
9785                                    const double tmp9_1 = w20*y_3;
9786                                    const double tmp4_1 = tmp1_0*w21;
9787                                    const double tmp8_1 = w22*y_0;
9788                                    const double tmp2_1 = w20*y_0;
9789                                    const double tmp7_1 = w20*y_2;
9790                                    const double tmp1_1 = tmp0_0*w21;
9791                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
9792                                    EM_F[1]+=tmp3_1 + tmp4_1 + tmp5_1;
9793                                    EM_F[4]+=tmp4_1 + tmp6_1 + tmp7_1;
9794                                    EM_F[5]+=tmp1_1 + tmp8_1 + tmp9_1;
9795                                } else { /* constant data */
9796                                    const double tmp0_1 = w23*y_p[0];
9797                                    EM_F[0]+=tmp0_1;
9798                                    EM_F[1]+=tmp0_1;
9799                                    EM_F[4]+=tmp0_1;
9800                                    EM_F[5]+=tmp0_1;
9801                                }
9802                            }
9803                            const index_t firstNode=m_N0*m_N1*k2+k0;
9804                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9805                                    add_EM_F, firstNode);
9806                        } // k0 loop
9807                    } // k2 loop
9808                } // colouring
9809            } // face 2
9810    
9811            if (m_faceOffset[3] > -1) {
9812                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
9813    #pragma omp for
9814                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
9815                        for (index_t k0=0; k0<m_NE0; ++k0) {
9816                            vector<double> EM_S(8*8, 0);
9817                            vector<double> EM_F(8, 0);
9818                            const index_t e = m_faceOffset[3]+INDEX2(k0,k2,m_NE0);
9819                            ///////////////
9820                            // process d //
9821                            ///////////////
9822                            if (add_EM_S) {
9823                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9824                                if (d.actsExpanded()) {
9825                                    const double d_0 = d_p[0];
9826                                    const double d_1 = d_p[1];
9827                                    const double d_2 = d_p[2];
9828                                    const double d_3 = d_p[3];
9829                                    const double tmp0_0 = d_1 + d_3;
9830                                    const double tmp2_0 = d_0 + d_1 + d_2 + d_3;
9831                                    const double tmp1_0 = d_0 + d_2;
9832                                    const double tmp4_0 = d_0 + d_1;
9833                                    const double tmp5_0 = d_0 + d_3;
9834                                    const double tmp3_0 = d_2 + d_3;
9835                                    const double tmp6_0 = d_1 + d_2;
9836                                    const double tmp15_1 = tmp4_0*w13;
9837                                    const double tmp10_1 = d_0*w16;
9838                                    const double tmp6_1 = tmp4_0*w12;
9839                                    const double tmp16_1 = tmp3_0*w12;
9840                                    const double tmp0_1 = tmp0_0*w13;
9841                                    const double tmp2_1 = tmp1_0*w13;
9842                                    const double tmp18_1 = d_1*w15;
9843                                    const double tmp14_1 = d_0*w15;
9844                                    const double tmp9_1 = d_2*w15;
9845                                    const double tmp4_1 = tmp2_0*w14;
9846                                    const double tmp13_1 = d_3*w16;
9847                                    const double tmp11_1 = tmp6_0*w14;
9848                                    const double tmp1_1 = tmp1_0*w12;
9849                                    const double tmp12_1 = d_3*w15;
9850                                    const double tmp3_1 = tmp0_0*w12;
9851                                    const double tmp7_1 = d_1*w16;
9852                                    const double tmp17_1 = d_2*w16;
9853                                    const double tmp8_1 = tmp5_0*w14;
9854                                    const double tmp5_1 = tmp3_0*w13;
9855                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9856                                    EM_S[INDEX2(3,2,8)]+=tmp15_1 + tmp16_1;
9857                                    EM_S[INDEX2(6,2,8)]+=tmp2_1 + tmp3_1;
9858                                    EM_S[INDEX2(7,2,8)]+=tmp4_1;
9859                                    EM_S[INDEX2(2,3,8)]+=tmp15_1 + tmp16_1;
9860                                    EM_S[INDEX2(3,3,8)]+=tmp7_1 + tmp8_1 + tmp9_1;
9861                                    EM_S[INDEX2(6,3,8)]+=tmp4_1;
9862                                    EM_S[INDEX2(7,3,8)]+=tmp0_1 + tmp1_1;
9863                                    EM_S[INDEX2(2,6,8)]+=tmp2_1 + tmp3_1;
9864                                    EM_S[INDEX2(3,6,8)]+=tmp4_1;
9865                                    EM_S[INDEX2(6,6,8)]+=tmp17_1 + tmp18_1 + tmp8_1;
9866                                    EM_S[INDEX2(7,6,8)]+=tmp5_1 + tmp6_1;
9867                                    EM_S[INDEX2(2,7,8)]+=tmp4_1;
9868                                    EM_S[INDEX2(3,7,8)]+=tmp0_1 + tmp1_1;
9869                                    EM_S[INDEX2(6,7,8)]+=tmp5_1 + tmp6_1;
9870                                    EM_S[INDEX2(7,7,8)]+=tmp11_1 + tmp13_1 + tmp14_1;
9871                                } else { /* constant data */
9872                                    const double tmp0_1 = d_p[0]*w17;
9873                                    const double tmp1_1 = d_p[0]*w19;
9874                                    const double tmp2_1 = d_p[0]*w18;
9875                                    EM_S[INDEX2(2,2,8)]+=tmp2_1;
9876                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
9877                                    EM_S[INDEX2(6,2,8)]+=tmp0_1;
9878                                    EM_S[INDEX2(7,2,8)]+=tmp1_1;
9879                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
9880                                    EM_S[INDEX2(3,3,8)]+=tmp2_1;
9881                                    EM_S[INDEX2(6,3,8)]+=tmp1_1;
9882                                    EM_S[INDEX2(7,3,8)]+=tmp0_1;
9883                                    EM_S[INDEX2(2,6,8)]+=tmp0_1;
9884                                    EM_S[INDEX2(3,6,8)]+=tmp1_1;
9885                                    EM_S[INDEX2(6,6,8)]+=tmp2_1;
9886                                    EM_S[INDEX2(7,6,8)]+=tmp0_1;
9887                                    EM_S[INDEX2(2,7,8)]+=tmp1_1;
9888                                    EM_S[INDEX2(3,7,8)]+=tmp0_1;
9889                                    EM_S[INDEX2(6,7,8)]+=tmp0_1;
9890                                    EM_S[INDEX2(7,7,8)]+=tmp2_1;
9891                                }
9892                            }
9893                            ///////////////
9894                            // process y //
9895                            ///////////////
9896                            if (add_EM_F) {
9897                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
9898                                if (y.actsExpanded()) {
9899                                    const double y_0 = y_p[0];
9900                                    const double y_1 = y_p[1];
9901                                    const double y_2 = y_p[2];
9902                                    const double y_3 = y_p[3];
9903                                    const double tmp0_0 = y_1 + y_2;
9904                                    const double tmp1_0 = y_0 + y_3;
9905                                    const double tmp0_1 = w22*y_3;
9906                                    const double tmp6_1 = w22*y_1;
9907                                    const double tmp3_1 = w22*y_2;
9908                                    const double tmp5_1 = w20*y_1;
9909                                    const double tmp9_1 = w20*y_3;
9910                                    const double tmp4_1 = tmp1_0*w21;
9911                                    const double tmp8_1 = w22*y_0;
9912                                    const double tmp2_1 = w20*y_0;
9913                                    const double tmp7_1 = w20*y_2;
9914                                    const double tmp1_1 = tmp0_0*w21;
9915                                    EM_F[2]+=tmp0_1 + tmp1_1 + tmp2_1;
9916                                    EM_F[3]+=tmp3_1 + tmp4_1 + tmp5_1;
9917                                    EM_F[6]+=tmp4_1 + tmp6_1 + tmp7_1;
9918                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
9919                                } else { /* constant data */
9920                                    const double tmp0_1 = w23*y_p[0];
9921                                    EM_F[2]+=tmp0_1;
9922                                    EM_F[3]+=tmp0_1;
9923                                    EM_F[6]+=tmp0_1;
9924                                    EM_F[7]+=tmp0_1;
9925                                }
9926                            }
9927                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(m_N1-2)+k0;
9928                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
9929                                    add_EM_F, firstNode);
9930                        } // k0 loop
9931                    } // k2 loop
9932                } // colouring
9933            } // face 3
9934    
9935            if (m_faceOffset[4] > -1) {
9936                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
9937    #pragma omp for
9938                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
9939                        for (index_t k0=0; k0<m_NE0; ++k0) {
9940                            vector<double> EM_S(8*8, 0);
9941                            vector<double> EM_F(8, 0);
9942                            const index_t e = m_faceOffset[4]+INDEX2(k0,k1,m_NE0);
9943                            ///////////////
9944                            // process d //
9945                            ///////////////
9946                            if (add_EM_S) {
9947                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
9948                                if (d.actsExpanded()) {
9949                                    const double d_0 = d_p[0];
9950                                    const double d_1 = d_p[1];
9951                                    const double d_2 = d_p[2];
9952                                    const double d_3 = d_p[3];
9953                                    const double tmp0_0 = d_1 + d_3;
9954                                    const double tmp2_0 = d_0 + d_1 + d_2 + d_3;
9955                                    const double tmp1_0 = d_0 + d_2;
9956                                    const double tmp6_0 = d_0 + d_1;
9957                                    const double tmp4_0 = d_0 + d_3;
9958                                    const double tmp5_0 = d_2 + d_3;
9959                                    const double tmp3_0 = d_1 + d_2;
9960                                    const double tmp18_1 = tmp5_0*w24;
9961                                    const double tmp6_1 = tmp1_0*w25;
9962                                    const double tmp4_1 = d_0*w27;
9963                                    const double tmp12_1 = d_2*w27;
9964                                    const double tmp0_1 = tmp0_0*w25;
9965                                    const double tmp5_1 = tmp3_0*w26;
9966                                    const double tmp2_1 = tmp2_0*w26;
9967                                    const double tmp17_1 = tmp6_0*w25;
9968                                    const double tmp14_1 = tmp6_0*w24;
9969                                    const double tmp11_1 = d_1*w28;
9970                                    const double tmp9_1 = d_1*w27;
9971                                    const double tmp16_1 = d_3*w27;
9972                                    const double tmp8_1 = d_2*w28;
9973                                    const double tmp7_1 = tmp0_0*w24;
9974                                    const double tmp15_1 = d_0*w28;
9975                                    const double tmp13_1 = tmp5_0*w25;
9976                                    const double tmp3_1 = d_3*w28;
9977                                    const double tmp10_1 = tmp4_0*w26;
9978                                    const double tmp1_1 = tmp1_0*w24;
9979                                    EM_S[INDEX2(0,0,8)]+=tmp15_1 + tmp16_1 + tmp5_1;
9980                                    EM_S[INDEX2(1,0,8)]+=tmp17_1 + tmp18_1;
9981                                    EM_S[INDEX2(2,0,8)]+=tmp6_1 + tmp7_1;
9982                                    EM_S[INDEX2(3,0,8)]+=tmp2_1;
9983                                    EM_S[INDEX2(0,1,8)]+=tmp17_1 + tmp18_1;
9984                                    EM_S[INDEX2(1,1,8)]+=tmp10_1 + tmp11_1 + tmp12_1;
9985                                    EM_S[INDEX2(2,1,8)]+=tmp2_1;
9986                                    EM_S[INDEX2(3,1,8)]+=tmp0_1 + tmp1_1;
9987                                    EM_S[INDEX2(0,2,8)]+=tmp6_1 + tmp7_1;
9988                                    EM_S[INDEX2(1,2,8)]+=tmp2_1;
9989                                    EM_S[INDEX2(2,2,8)]+=tmp10_1 + tmp8_1 + tmp9_1;
9990                                    EM_S[INDEX2(3,2,8)]+=tmp13_1 + tmp14_1;
9991                                    EM_S[INDEX2(0,3,8)]+=tmp2_1;
9992                                    EM_S[INDEX2(1,3,8)]+=tmp0_1 + tmp1_1;
9993                                    EM_S[INDEX2(2,3,8)]+=tmp13_1 + tmp14_1;
9994                                    EM_S[INDEX2(3,3,8)]+=tmp3_1 + tmp4_1 + tmp5_1;
9995                                } else { /* constant data */
9996                                    const double tmp2_1 = d_p[0]*w31;
9997                                    const double tmp1_1 = d_p[0]*w30;
9998                                    const double tmp0_1 = d_p[0]*w29;
9999                                    EM_S[INDEX2(0,0,8)]+=tmp2_1;
10000                                    EM_S[INDEX2(1,0,8)]+=tmp0_1;
10001                                    EM_S[INDEX2(2,0,8)]+=tmp0_1;
10002                                    EM_S[INDEX2(3,0,8)]+=tmp1_1;
10003                                    EM_S[INDEX2(0,1,8)]+=tmp0_1;
10004                                    EM_S[INDEX2(1,1,8)]+=tmp2_1;
10005                                    EM_S[INDEX2(2,1,8)]+=tmp1_1;
10006                                    EM_S[INDEX2(3,1,8)]+=tmp0_1;
10007                                    EM_S[INDEX2(0,2,8)]+=tmp0_1;
10008                                    EM_S[INDEX2(1,2,8)]+=tmp1_1;
10009                                    EM_S[INDEX2(2,2,8)]+=tmp2_1;
10010                                    EM_S[INDEX2(3,2,8)]+=tmp0_1;
10011                                    EM_S[INDEX2(0,3,8)]+=tmp1_1;
10012                                    EM_S[INDEX2(1,3,8)]+=tmp0_1;
10013                                    EM_S[INDEX2(2,3,8)]+=tmp0_1;
10014                                    EM_S[INDEX2(3,3,8)]+=tmp2_1;
10015                                }
10016                            }
10017                            ///////////////
10018                            // process y //
10019                            ///////////////
10020                            if (add_EM_F) {
10021                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10022                                if (y.actsExpanded()) {
10023                                    const double y_0 = y_p[0];
10024                                    const double y_1 = y_p[1];
10025                                    const double y_2 = y_p[2];
10026                                    const double y_3 = y_p[3];
10027                                    const double tmp0_0 = y_1 + y_2;
10028                                    const double tmp1_0 = y_0 + y_3;
10029                                    const double tmp7_1 = w34*y_1;
10030                                    const double tmp3_1 = w32*y_1;
10031                                    const double tmp8_1 = w32*y_3;
10032                                    const double tmp0_1 = w32*y_0;
10033                                    const double tmp2_1 = w34*y_3;
10034                                    const double tmp9_1 = w34*y_0;
10035                                    const double tmp6_1 = w32*y_2;
10036                                    const double tmp5_1 = w34*y_2;
10037                                    const double tmp1_1 = tmp0_0*w33;
10038                                    const double tmp4_1 = tmp1_0*w33;
10039                                    EM_F[0]+=tmp0_1 + tmp1_1 + tmp2_1;
10040                                    EM_F[1]+=tmp3_1 + tmp4_1 + tmp5_1;
10041                                    EM_F[2]+=tmp4_1 + tmp6_1 + tmp7_1;
10042                                    EM_F[3]+=tmp1_1 + tmp8_1 + tmp9_1;
10043                                } else { /* constant data */
10044                                    const double tmp0_1 = w35*y_p[0];
10045                                    EM_F[0]+=tmp0_1;
10046                                    EM_F[1]+=tmp0_1;
10047                                    EM_F[2]+=tmp0_1;
10048                                    EM_F[3]+=tmp0_1;
10049                                }
10050                            }
10051                            const index_t firstNode=m_N0*k1+k0;
10052                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10053                                    add_EM_F, firstNode);
10054                        } // k0 loop
10055                    } // k1 loop
10056                } // colouring
10057            } // face 4
10058    
10059            if (m_faceOffset[5] > -1) {
10060                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10061    #pragma omp for
10062                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10063                        for (index_t k0=0; k0<m_NE0; ++k0) {
10064                            vector<double> EM_S(8*8, 0);
10065                            vector<double> EM_F(8, 0);
10066                            const index_t e = m_faceOffset[5]+INDEX2(k0,k1,m_NE0);
10067                            ///////////////
10068                            // process d //
10069                            ///////////////
10070                            if (add_EM_S) {
10071                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10072                                if (d.actsExpanded()) {
10073                                    const double d_0 = d_p[0];
10074                                    const double d_1 = d_p[1];
10075                                    const double d_2 = d_p[2];
10076                                    const double d_3 = d_p[3];
10077                                    const double tmp2_0 = d_1 + d_3;
10078                                    const double tmp0_0 = d_0 + d_1 + d_2 + d_3;
10079                                    const double tmp1_0 = d_0 + d_2;
10080                                    const double tmp3_0 = d_0 + d_1;
10081                                    const double tmp6_0 = d_0 + d_3;
10082                                    const double tmp4_0 = d_2 + d_3;
10083                                    const double tmp5_0 = d_1 + d_2;
10084                                    const double tmp1_1 = tmp1_0*w25;
10085                                    const double tmp11_1 = d_0*w27;
10086                                    const double tmp9_1 = tmp5_0*w26;
10087                                    const double tmp12_1 = tmp2_0*w25;
10088                                    const double tmp3_1 = tmp3_0*w25;
10089                                    const double tmp6_1 = tmp3_0*w24;
10090                                    const double tmp2_1 = tmp2_0*w24;
10091                                    const double tmp10_1 = d_3*w28;
10092                                    const double tmp16_1 = tmp6_0*w26;
10093                                    const double tmp17_1 = d_1*w28;
10094                                    const double tmp7_1 = d_0*w28;
10095                                    const double tmp14_1 = d_2*w28;
10096                                    const double tmp18_1 = d_2*w27;
10097                                    const double tmp15_1 = d_1*w27;
10098                                    const double tmp0_1 = tmp0_0*w26;
10099                                    const double tmp4_1 = tmp4_0*w24;
10100                                    const double tmp5_1 = tmp4_0*w25;
10101                                    const double tmp8_1 = d_3*w27;
10102                                    const double tmp13_1 = tmp1_0*w24;
10103                                    EM_S[INDEX2(4,4,8)]+=tmp7_1 + tmp8_1 + tmp9_1;
10104                                    EM_S[INDEX2(5,4,8)]+=tmp3_1 + tmp4_1;
10105                                    EM_S[INDEX2(6,4,8)]+=tmp1_1 + tmp2_1;
10106                                    EM_S[INDEX2(7,4,8)]+=tmp0_1;
10107                                    EM_S[INDEX2(4,5,8)]+=tmp3_1 + tmp4_1;
10108                                    EM_S[INDEX2(5,5,8)]+=tmp16_1 + tmp17_1 + tmp18_1;
10109                                    EM_S[INDEX2(6,5,8)]+=tmp0_1;
10110                                    EM_S[INDEX2(7,5,8)]+=tmp12_1 + tmp13_1;
10111                                    EM_S[INDEX2(4,6,8)]+=tmp1_1 + tmp2_1;
10112                                    EM_S[INDEX2(5,6,8)]+=tmp0_1;
10113                                    EM_S[INDEX2(6,6,8)]+=tmp14_1 + tmp15_1 + tmp16_1;
10114                                    EM_S[INDEX2(7,6,8)]+=tmp5_1 + tmp6_1;
10115                                    EM_S[INDEX2(4,7,8)]+=tmp0_1;
10116                                    EM_S[INDEX2(5,7,8)]+=tmp12_1 + tmp13_1;
10117                                    EM_S[INDEX2(6,7,8)]+=tmp5_1 + tmp6_1;
10118                                    EM_S[INDEX2(7,7,8)]+=tmp10_1 + tmp11_1 + tmp9_1;
10119                                } else { /* constant data */
10120                                    const double tmp2_1 = d_p[0]*w31;
10121                                    const double tmp0_1 = d_p[0]*w30;
10122                                    const double tmp1_1 = d_p[0]*w29;
10123                                    EM_S[INDEX2(4,4,8)]+=tmp2_1;
10124                                    EM_S[INDEX2(5,4,8)]+=tmp1_1;
10125                                    EM_S[INDEX2(6,4,8)]+=tmp1_1;
10126                                    EM_S[INDEX2(7,4,8)]+=tmp0_1;
10127                                    EM_S[INDEX2(4,6,8)]+=tmp1_1;
10128                                    EM_S[INDEX2(5,6,8)]+=tmp0_1;
10129                                    EM_S[INDEX2(6,6,8)]+=tmp2_1;
10130                                    EM_S[INDEX2(7,6,8)]+=tmp1_1;
10131                                    EM_S[INDEX2(4,5,8)]+=tmp1_1;
10132                                    EM_S[INDEX2(5,5,8)]+=tmp2_1;
10133                                    EM_S[INDEX2(6,5,8)]+=tmp0_1;
10134                                    EM_S[INDEX2(7,5,8)]+=tmp1_1;
10135                                    EM_S[INDEX2(4,7,8)]+=tmp0_1;
10136                                    EM_S[INDEX2(5,7,8)]+=tmp1_1;
10137                                    EM_S[INDEX2(6,7,8)]+=tmp1_1;
10138                                    EM_S[INDEX2(7,7,8)]+=tmp2_1;
10139                                }
10140                            }
10141                            ///////////////
10142                            // process y //
10143                            ///////////////
10144                            if (add_EM_F) {
10145                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10146                                if (y.actsExpanded()) {
10147                                    const double y_0 = y_p[0];
10148                                    const double y_1 = y_p[1];
10149                                    const double y_2 = y_p[2];
10150                                    const double y_3 = y_p[3];
10151                                    const double tmp0_0 = y_1 + y_2;
10152                                    const double tmp1_0 = y_0 + y_3;
10153                                    const double tmp7_1 = w34*y_1;
10154                                    const double tmp3_1 = w32*y_1;
10155                                    const double tmp8_1 = w32*y_3;
10156                                    const double tmp0_1 = w32*y_0;
10157                                    const double tmp2_1 = w34*y_3;
10158                                    const double tmp9_1 = w34*y_0;
10159                                    const double tmp6_1 = w32*y_2;
10160                                    const double tmp5_1 = w34*y_2;
10161                                    const double tmp1_1 = tmp0_0*w33;
10162                                    const double tmp4_1 = tmp1_0*w33;
10163                                    EM_F[4]+=tmp0_1 + tmp1_1 + tmp2_1;
10164                                    EM_F[5]+=tmp3_1 + tmp4_1 + tmp5_1;
10165                                    EM_F[6]+=tmp4_1 + tmp6_1 + tmp7_1;
10166                                    EM_F[7]+=tmp1_1 + tmp8_1 + tmp9_1;
10167                                } else { /* constant data */
10168                                    const double tmp0_1 = w35*y_p[0];
10169                                    EM_F[4]+=tmp0_1;
10170                                    EM_F[5]+=tmp0_1;
10171                                    EM_F[6]+=tmp0_1;
10172                                    EM_F[7]+=tmp0_1;
10173                                }
10174                            }
10175                            const index_t firstNode=m_N0*m_N1*(m_N2-2)+m_N0*k1+k0;
10176                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10177                                    add_EM_F, firstNode);
10178                        } // k0 loop
10179                    } // k1 loop
10180                } // colouring
10181            } // face 5
10182        } // end of parallel region
10183  }  }
10184    
10185  //protected  //protected
10186  void Brick::assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,  void Brick::assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,
10187        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
10188  {  {
10189        const double h0 = m_l0/m_gNE0;
10190        const double h1 = m_l1/m_gNE1;
10191        const double h2 = m_l2/m_gNE2;
10192        const double w0 = 0.0625*h1*h2;
10193        const double w1 = 0.25*h1*h2;
10194        const double w2 = 0.0625*h0*h2;
10195        const double w3 = 0.25*h0*h2;
10196        const double w4 = 0.0625*h0*h1;
10197        const double w5 = 0.25*h0*h1;
10198        const bool add_EM_S=!d.isEmpty();
10199        const bool add_EM_F=!y.isEmpty();
10200        rhs.requireWrite();
10201    #pragma omp parallel
10202        {
10203            if (m_faceOffset[0] > -1) {
10204                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10205    #pragma omp for
10206                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10207                        for (index_t k1=0; k1<m_NE1; ++k1) {
10208                            vector<double> EM_S(8*8, 0);
10209                            vector<double> EM_F(8, 0);
10210                            const index_t e = INDEX2(k1,k2,m_NE1);
10211                            ///////////////
10212                            // process d //
10213                            ///////////////
10214                            if (add_EM_S) {
10215                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10216                                const double d_0 = d_p[0];
10217                                const double tmp0_1 = d_0*w0;
10218                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10219                                EM_S[INDEX2(2,0,8)]+=tmp0_1;
10220                                EM_S[INDEX2(4,0,8)]+=tmp0_1;
10221                                EM_S[INDEX2(6,0,8)]+=tmp0_1;
10222                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
10223                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10224                                EM_S[INDEX2(4,2,8)]+=tmp0_1;
10225                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
10226                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
10227                                EM_S[INDEX2(2,4,8)]+=tmp0_1;
10228                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10229                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
10230                                EM_S[INDEX2(0,6,8)]+=tmp0_1;
10231                                EM_S[INDEX2(2,6,8)]+=tmp0_1;
10232                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
10233                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10234                            }
10235                            ///////////////
10236                            // process y //
10237                            ///////////////
10238                            if (add_EM_F) {
10239                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10240                                const double y_0 = y_p[0];
10241                                const double tmp0_1 = w1*y_0;
10242                                EM_F[0]+=tmp0_1;
10243                                EM_F[2]+=tmp0_1;
10244                                EM_F[4]+=tmp0_1;
10245                                EM_F[6]+=tmp0_1;
10246                            }
10247                            const index_t firstNode=m_N0*m_N1*k2+m_N0*k1;
10248                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10249                                    add_EM_F, firstNode);
10250                        } // k1 loop
10251                    } // k2 loop
10252                } // colouring
10253            } // face 0
10254    
10255            if (m_faceOffset[1] > -1) {
10256                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10257    #pragma omp for
10258                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10259                        for (index_t k1=0; k1<m_NE1; ++k1) {
10260                            vector<double> EM_S(8*8, 0);
10261                            vector<double> EM_F(8, 0);
10262                            const index_t e = m_faceOffset[1]+INDEX2(k1,k2,m_NE1);
10263                            ///////////////
10264                            // process d //
10265                            ///////////////
10266                            if (add_EM_S) {
10267                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10268                                const double d_0 = d_p[0];
10269                                const double tmp0_1 = d_0*w0;
10270                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10271                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
10272                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
10273                                EM_S[INDEX2(7,1,8)]+=tmp0_1;
10274                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
10275                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10276                                EM_S[INDEX2(5,3,8)]+=tmp0_1;
10277                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
10278                                EM_S[INDEX2(1,5,8)]+=tmp0_1;
10279                                EM_S[INDEX2(3,5,8)]+=tmp0_1;
10280                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10281                                EM_S[INDEX2(7,5,8)]+=tmp0_1;
10282                                EM_S[INDEX2(1,7,8)]+=tmp0_1;
10283                                EM_S[INDEX2(3,7,8)]+=tmp0_1;
10284                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
10285                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10286                            }
10287                            ///////////////
10288                            // process y //
10289                            ///////////////
10290                            if (add_EM_F) {
10291                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10292                                const double y_0 = y_p[0];
10293                                const double tmp0_1 = w1*y_0;
10294                                EM_F[1]+=tmp0_1;
10295                                EM_F[3]+=tmp0_1;
10296                                EM_F[5]+=tmp0_1;
10297                                EM_F[7]+=tmp0_1;
10298                            }
10299                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(k1+1)-2;
10300                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10301                                    add_EM_F, firstNode);
10302                        } // k1 loop
10303                    } // k2 loop
10304                } // colouring
10305            } // face 1
10306    
10307            if (m_faceOffset[2] > -1) {
10308                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10309    #pragma omp for
10310                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10311                        for (index_t k0=0; k0<m_NE0; ++k0) {
10312                            vector<double> EM_S(8*8, 0);
10313                            vector<double> EM_F(8, 0);
10314                            const index_t e = m_faceOffset[2]+INDEX2(k0,k2,m_NE0);
10315                            ///////////////
10316                            // process d //
10317                            ///////////////
10318                            if (add_EM_S) {
10319                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10320                                const double d_0 = d_p[0];
10321                                const double tmp0_1 = d_0*w2;
10322                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10323                                EM_S[INDEX2(1,0,8)]+=tmp0_1;
10324                                EM_S[INDEX2(4,0,8)]+=tmp0_1;
10325                                EM_S[INDEX2(5,0,8)]+=tmp0_1;
10326                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
10327                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10328                                EM_S[INDEX2(4,1,8)]+=tmp0_1;
10329                                EM_S[INDEX2(5,1,8)]+=tmp0_1;
10330                                EM_S[INDEX2(0,4,8)]+=tmp0_1;
10331                                EM_S[INDEX2(1,4,8)]+=tmp0_1;
10332                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10333                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
10334                                EM_S[INDEX2(0,5,8)]+=tmp0_1;
10335                                EM_S[INDEX2(1,5,8)]+=tmp0_1;
10336                                EM_S[INDEX2(4,5,8)]+=tmp0_1;
10337                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10338                            }
10339                            ///////////////
10340                            // process y //
10341                            ///////////////
10342                            if (add_EM_F) {
10343                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10344                                const double tmp0_1 = w3*y_p[0];
10345                                EM_F[0]+=tmp0_1;
10346                                EM_F[1]+=tmp0_1;
10347                                EM_F[4]+=tmp0_1;
10348                                EM_F[5]+=tmp0_1;
10349                            }
10350                            const index_t firstNode=m_N0*m_N1*k2+k0;
10351                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10352                                    add_EM_F, firstNode);
10353                        } // k0 loop
10354                    } // k2 loop
10355                } // colouring
10356            } // face 2
10357    
10358            if (m_faceOffset[3] > -1) {
10359                for (index_t k2_0=0; k2_0<2; k2_0++) { // colouring
10360    #pragma omp for
10361                    for (index_t k2=k2_0; k2<m_NE2; k2+=2) {
10362                        for (index_t k0=0; k0<m_NE0; ++k0) {
10363                            vector<double> EM_S(8*8, 0);
10364                            vector<double> EM_F(8, 0);
10365                            const index_t e = m_faceOffset[3]+INDEX2(k0,k2,m_NE0);
10366                            ///////////////
10367                            // process d //
10368                            ///////////////
10369                            if (add_EM_S) {
10370                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10371                                const double d_0 = d_p[0];
10372                                const double tmp0_1 = d_0*w2;
10373                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10374                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
10375                                EM_S[INDEX2(6,2,8)]+=tmp0_1;
10376                                EM_S[INDEX2(7,2,8)]+=tmp0_1;
10377                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
10378                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10379                                EM_S[INDEX2(6,3,8)]+=tmp0_1;
10380                                EM_S[INDEX2(7,3,8)]+=tmp0_1;
10381                                EM_S[INDEX2(2,6,8)]+=tmp0_1;
10382                                EM_S[INDEX2(3,6,8)]+=tmp0_1;
10383                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10384                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
10385                                EM_S[INDEX2(2,7,8)]+=tmp0_1;
10386                                EM_S[INDEX2(3,7,8)]+=tmp0_1;
10387                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
10388                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10389                            }
10390                            ///////////////
10391                            // process y //
10392                            ///////////////
10393                            if (add_EM_F) {
10394                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10395                                const double y_0 = y_p[0];
10396                                const double tmp0_1 = w3*y_0;
10397                                EM_F[2]+=tmp0_1;
10398                                EM_F[3]+=tmp0_1;
10399                                EM_F[6]+=tmp0_1;
10400                                EM_F[7]+=tmp0_1;
10401                            }
10402                            const index_t firstNode=m_N0*m_N1*k2+m_N0*(m_N1-2)+k0;
10403                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10404                                    add_EM_F, firstNode);
10405                        } // k0 loop
10406                    } // k2 loop
10407                } // colouring
10408            } // face 3
10409    
10410            if (m_faceOffset[4] > -1) {
10411                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10412    #pragma omp for
10413                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10414                        for (index_t k0=0; k0<m_NE0; ++k0) {
10415                            vector<double> EM_S(8*8, 0);
10416                            vector<double> EM_F(8, 0);
10417                            const index_t e = m_faceOffset[4]+INDEX2(k0,k1,m_NE0);
10418                            ///////////////
10419                            // process d //
10420                            ///////////////
10421                            if (add_EM_S) {
10422                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10423                                const double d_0 = d_p[0];
10424                                const double tmp0_1 = d_0*w4;
10425                                EM_S[INDEX2(0,0,8)]+=tmp0_1;
10426                                EM_S[INDEX2(1,0,8)]+=tmp0_1;
10427                                EM_S[INDEX2(2,0,8)]+=tmp0_1;
10428                                EM_S[INDEX2(3,0,8)]+=tmp0_1;
10429                                EM_S[INDEX2(0,1,8)]+=tmp0_1;
10430                                EM_S[INDEX2(1,1,8)]+=tmp0_1;
10431                                EM_S[INDEX2(2,1,8)]+=tmp0_1;
10432                                EM_S[INDEX2(3,1,8)]+=tmp0_1;
10433                                EM_S[INDEX2(0,2,8)]+=tmp0_1;
10434                                EM_S[INDEX2(1,2,8)]+=tmp0_1;
10435                                EM_S[INDEX2(2,2,8)]+=tmp0_1;
10436                                EM_S[INDEX2(3,2,8)]+=tmp0_1;
10437                                EM_S[INDEX2(0,3,8)]+=tmp0_1;
10438                                EM_S[INDEX2(1,3,8)]+=tmp0_1;
10439                                EM_S[INDEX2(2,3,8)]+=tmp0_1;
10440                                EM_S[INDEX2(3,3,8)]+=tmp0_1;
10441                            }
10442                            ///////////////
10443                            // process y //
10444                            ///////////////
10445                            if (add_EM_F) {
10446                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10447                                const double y_0 = y_p[0];
10448                                const double tmp0_1 = w5*y_0;
10449                                EM_F[0]+=tmp0_1;
10450                                EM_F[1]+=tmp0_1;
10451                                EM_F[2]+=tmp0_1;
10452                                EM_F[3]+=tmp0_1;
10453                            }
10454                            const index_t firstNode=m_N0*k1+k0;
10455                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10456                                    add_EM_F, firstNode);
10457                        } // k0 loop
10458                    } // k1 loop
10459                } // colouring
10460            } // face 4
10461    
10462            if (m_faceOffset[5] > -1) {
10463                for (index_t k1_0=0; k1_0<2; k1_0++) { // colouring
10464    #pragma omp for
10465                    for (index_t k1=k1_0; k1<m_NE1; k1+=2) {
10466                        for (index_t k0=0; k0<m_NE0; ++k0) {
10467                            vector<double> EM_S(8*8, 0);
10468                            vector<double> EM_F(8, 0);
10469                            const index_t e = m_faceOffset[5]+INDEX2(k0,k1,m_NE0);
10470                            ///////////////
10471                            // process d //
10472                            ///////////////
10473                            if (add_EM_S) {
10474                                const double* d_p=const_cast<escript::Data*>(&d)->getSampleDataRO(e);
10475                                const double d_0 = d_p[0];
10476                                const double tmp0_1 = d_0*w4;
10477                                EM_S[INDEX2(4,4,8)]+=tmp0_1;
10478                                EM_S[INDEX2(5,4,8)]+=tmp0_1;
10479                                EM_S[INDEX2(6,4,8)]+=tmp0_1;
10480                                EM_S[INDEX2(7,4,8)]+=tmp0_1;
10481                                EM_S[INDEX2(4,5,8)]+=tmp0_1;
10482                                EM_S[INDEX2(5,5,8)]+=tmp0_1;
10483                                EM_S[INDEX2(6,5,8)]+=tmp0_1;
10484                                EM_S[INDEX2(7,5,8)]+=tmp0_1;
10485                                EM_S[INDEX2(4,6,8)]+=tmp0_1;
10486                                EM_S[INDEX2(5,6,8)]+=tmp0_1;
10487                                EM_S[INDEX2(6,6,8)]+=tmp0_1;
10488                                EM_S[INDEX2(7,6,8)]+=tmp0_1;
10489                                EM_S[INDEX2(4,7,8)]+=tmp0_1;
10490                                EM_S[INDEX2(5,7,8)]+=tmp0_1;
10491                                EM_S[INDEX2(6,7,8)]+=tmp0_1;
10492                                EM_S[INDEX2(7,7,8)]+=tmp0_1;
10493                            }
10494                            ///////////////
10495                            // process y //
10496                            ///////////////
10497                            if (add_EM_F) {
10498                                const double* y_p=const_cast<escript::Data*>(&y)->getSampleDataRO(e);
10499                                const double y_0 = y_p[0];
10500                                const double tmp0_1 = w5*y_0;
10501                                EM_F[4]+=tmp0_1;
10502                                EM_F[5]+=tmp0_1;
10503                                EM_F[6]+=tmp0_1;
10504                                EM_F[7]+=tmp0_1;
10505                            }
10506                            const index_t firstNode=m_N0*m_N1*(m_N2-2)+m_N0*k1+k0;
10507                            addToMatrixAndRHS(mat, rhs, EM_S, EM_F, add_EM_S,
10508                                    add_EM_F, firstNode);
10509                        } // k0 loop
10510                    } // k1 loop
10511                } // colouring
10512            } // face 5
10513        } // end of parallel region
10514  }  }
10515    
10516  //protected  //protected
10517  void Brick::assemblePDEBoundarySystem(Paso_SystemMatrix* mat,  void Brick::assemblePDEBoundarySystem(Paso_SystemMatrix* mat,
10518        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const        escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
10519  {  {
10520        const double h0 = m_l0/m_gNE0;
10521        const double h1 = m_l1/m_gNE1;
10522        const double h2 = m_l2/m_gNE2;
10523        dim_t numEq, numComp;
10524        if (!mat)
10525            numEq=numComp=(rhs.isEmpty() ? 1 : rhs.getDataPointSize());
10526        else {
10527            numEq=mat->logical_row_block_size;
10528            numComp=mat->logical_col_block_size;
10529        }
10530        const double w0 = 0.0018607582807716854616*h1*h2;
10531        const double w1 = 0.025917019497006092316*h1*h2;
10532        const double w10 = 0.01116454968463011277*h1*h2;
10533        const double w11 = 0.25*h1*h2;
10534        const double w12 = 0.0018607582807716854616*h0*h2;
10535        const double w13 = 0.025917019497006092316*h0*h2;
10536        const double w14 = 0.0069444444444444444444*h0*h2;
10537        const double w15 = 0.00049858867864229740201*h0*h2;
10538        const double w16 = 0.09672363354357992482*h0*h2;
10539        const double w17 = 0.055555555555555555556*h0*h2;
10540        const double w18 = 0.11111111111111111111*h0*h2;
10541        const double w19 = 0.027777777777777777778*h0*h2;
10542        const double w2 = 0.0069444444444444444444*h1*h2;
10543        const double w20 = 0.1555021169820365539*h0*h2;
10544        const double w21 = 0.041666666666666666667*h0*h2;
10545        const double w22 = 0.01116454968463011277*h0*h2;
10546        const double w23 = 0.25*h0*h2;
10547        const double w24 = 0.0018607582807716854616*h0*h1;
10548        const double w25 = 0.025917019497006092316*h0*h1;
10549        const double w26 = 0.0069444444444444444444*h0*h1;
10550        const double w27 = 0.00049858867864229740201*h0*h1;
10551        const double w28 = 0.09672363354357992482*h0*h1;
10552        const double w29 = 0.055555555555555555556*h0*h1;
10553        const double w3 = 0.00049858867864229740201*h1*h2;
10554        const double w30 = 0.027777777777777777778*h0*h1;
10555        const double w31 = 0.11111111111111111111*h0*h1;
10556        const double w32 = 0.1555021169820365539*h0*h1;
10557        const double w33 = 0.041666666666666666667*h0*h1;
10558        const double w34 = 0.01116454968463011277*h0*h1;
10559        const double w35 = 0.25*h0*h1;
10560        const double w4 = 0.09672363354357992482*h1*h2;
10561        const double w5 = 0.055555555555555555556*h1*h2;
10562        const double w6 = 0.11111111111111111111*h1*h2;
10563        const double w7 = 0.027777777777777777778*h1*h2;
10564        const double w8 = 0.1555021169820365539*h1*h2;
10565        const double w9 = 0.041666666666666666667*h1*h2;
10566        const bool add_EM_S=!d.isEmpty();
10567        const bool add_EM_F=!y.isEmpty();
10568        rhs.requireWrite();
10569    #pragma omp parallel
10570        {
10571            if (m_faceOffset[0] > -1) {
10572                for (index_t k2_0=0; k2_0<2; k2_0++) {